Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Laravel_メソッドインジェクション_0715
Search
Takayuki
July 15, 2018
Technology
1
210
Laravel_メソッドインジェクション_0715
Takayuki
July 15, 2018
Tweet
Share
More Decks by Takayuki
See All by Takayuki
地方カンファレンス主催のススメ
bumptakayuki
1
93
Laravelで敢えて試す脆弱性のある書き方
bumptakayuki
1
290
地方でのPHPエンジニア採用って実際どうなの?
bumptakayuki
0
360
沖縄観光、名物を一挙紹介!
bumptakayuki
2
380
Laravel ShiftでLaravelのバージョンアップしてみた話
bumptakayuki
1
930
flutterでイベントアプリを作ってみた
bumptakayuki
0
87
オフショア開発の辛みと学んだ事
bumptakayuki
0
300
ChatGPTにStripeのサンプルコードを書かせてみた
bumptakayuki
1
130
ChatGPTに記事を書かせてみた
bumptakayuki
1
200
Other Decks in Technology
See All in Technology
OpenTelemetry実践 はじめの一歩
taxin
0
300
10分でわかるfreeeのQA
freee
0
220
既存プロセスからの脱却と変化に適応するために必要なこと
cybozuinsideout
PRO
2
170
Introduction to Jetpack Compose
pohjus
1
110
あらゆる商品を扱う商品データベースを再設計した話 / product db re-architecture
rince
8
3.4k
Skaffoldを用いたGKEアプリケーションの CD(Continuous Development)
kojake_300
1
230
Tohoku.Tech #1 「EC-CUBE/AWSの構築をChatGPTに相談してみました」by テンダ
jun2882
0
140
エンジニアブランディングチームの KPI / KPI's of engineer branding team
chaspy
1
140
Challenges - Open Farming Hackdays 2024
loleg
0
500
ハイパフォーマンスな組織をつくるための開発生産性の考え方 / developer-productivity-high-performer-link-and-motivation
lmi
3
230
プッシュ型子育てサービスを、先行プロジェクト実施自治体において開始します
govtechtokyo
0
230
HoneycombとOpenTelemetryでオブザーバビリティに入門してみる
sumiren
2
140
Featured
See All Featured
Atom: Resistance is Futile
akmur
258
25k
[RailsConf 2023] Rails as a piece of cake
palkan
21
3.8k
Fireside Chat
paigeccino
19
2.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
19
1.6k
Adopting Sorbet at Scale
ufuk
66
8.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
Faster Mobile Websites
deanohume
296
30k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
11
1.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
5
1.4k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Transcript
Laravel method Injection Laravel method Injection
2 method Injectionͱ 3 ͍ํ Agenda 1 Laravelͷಛ
3 ࣗݾհ ◆໊લ ླ ೭(Suzuki Takayuki) ◆ࣗݾհ ɾ1990ɺਆಸݝੜ·Εɻ ɾࣾձਓʹͳ͔ͬͯΒɺϓϩάϥϛϯάΛ࢝ΊΔɻ ɾ2015ʹϑϧεϐʔυʹೖࣾ͠ɺ2017ʹϑϦʔϥϯεΛ
ͬͨޙʹ201711݄ʹԭೄͰىۀɻ ◆झຯ ίεϓϨɺԻָϥΠϒɺϚϥιϯେձʹग़Δɺٿ؍ઓ ◆εΩϧ ɾPHP, Symfony2,CakePHP3,Laravel5, ɾJavaScript, backbone.js,Angular4
4
5 ձࣾհ ◆ձ໊ࣾ גࣜձࣾRe:Build ◆ॅॴ ԭೄݝԭೄࢢதԝ̍ஸ̍̒−̕ ◆ࣄۀ༰ ɾۀʹ͓͍ͯͷϑʔυϩεΛແ͘͢ ࣗࣾWEBαʔϏεͷاըɾ։ൃɻ ɾडୗ։ൃ
◆ΤϯδχΞͷಇ͖ํ ϦϞʔτϫʔΫՄೳͳࣗ༝ͳಇ͖ํΛਪͯ͠·͢ʂ
1 Laravelͷಛ
7 1 Laravelͷಛ ɾۄͶ͗ͷΑ͏ͳߏͰϦΫΤετͱ Ϩεϙϯεͷؒʹ༷ʑͳॲཧΛڬΈࠐ Έ͍͢ɻ ɾόϦσʔγϣϯͳͲ୯ҰͷΤϯςΟ ςΟʹґଘ͢ΔͷͰͳ͘ɺForm୯ ҐͰ࣮Ͱ͖Δɻ MiddleWareͷྫ
ೝ ূ ν Σ ο Ϋɺ ό Ϧ σ ʔ γ ϣ ϯɺ CSRFτʔΫϯͷνΣοΫ
8 ϥΠϒϥϦ͕ॆ࣮
LaravelҎ֎ͷPHPϑϨʔϜϫʔΫݮগʹ͋ΔΑ͏Ͱ͢ɻ͜͜·Ͱຊࠃ͚ͩΛݟ͖ͯ·ͨ͠ɻ࣍ʹւ֎ͷݱঢ়ΛݟͯΈ·͢ɻ ຊͷPHPϑϨʔϜϫʔΫͷಈ
ຊͷPHPϑϨʔϜϫʔΫͷಈ ԭೄ͕ߴ͍ʂʂʂʂ
ຊͱશ͘ঢ়گ͕ҧ͍·͢ɻҰ൪ݕࡧ͞Ε͍ͯΔʢΘΕ͍ͯΔʣͷ੨৭ͷʮLaravelʯɻLaravel্͚͕ͩঢ͠ɺͦͷଞ͕ݮগ ͍ͯ͠Δͱ͍͏ʹ͓͍ͯຊͱಉ͡Ͱ͕͢ɺݱࡏLaravel͕Ұ൪ओྲྀͱͳ͍ͬͯΔ͕ຊͱશ͘ҧ͍·͢ɻຊ Εͯւ֎ͷྲྀΕʹଈ͍ͯ͘͠Ͱ͠ΐ͏͔Βɺ͜ͷ··ʮCakePHPʯ͕ݮগ͠ɺʮLavelʯ͕ओྲྀʹͳ͍͖ͬͯͦ͏Ͱ͢ɻ ੈքͷPHPϑϨʔϜϫʔΫͷಈ ʙੈքͰ͢ͰʹʮLaravelʯ͕ओྲྀʙ
3େϑϨʔϜϫʔΫͷΠϝʔδ(एׯɺओ؍ؚΉ) CakePHP Laravel Symfony ૣ͍ ͍ ͍ ߴ͍ ։ൃ ֶशίετ
2 method Injectionͱ
1 4 DI (Dependency Injectionͷུޠ)ͱ ίϯϙʔωϯτؒͷґଘؔΛϓϩάϥϜͷιʔείʔυ͔Βഉআ͠ɺ֎෦ͷઃఆϑΝ ΠϧͳͲͰೖͰ͖ΔΑ͏ʹ͢ΔιϑτΣΞύλʔϯͰ͋Δɻӳޠͷ಄จࣈ͔ΒDIͱ ུ͞ΕΔɻ !ΫϥεͳͲͰݻఆԽ͞Εͨͷ͕͋ΔͱԿ͕ͳͷ? ɾॊೈੑ͕ͳ͍
ɾςετ͠ʹ͍͘ !ղܾํ๏ ʮґଘ͍ͯ͠Δ෦Λ֎͔Βೖ͢Δʯ
1 5 DIʹ͓͚Δʮґଘੑʯͱʮೖʯͷҙຯ ɾґଘੑ (େࡶʹ)ͱ͋ΔΫϥεʹɺݻఆͷఆɺมɺΠϯελϯε͕ೖͬͪΌ͍ͬͯΔঢ়ଶ ͭ·ΓͦͷΫϥεɺͦͷఆɺมɺΠϯελϯεʹґଘ͍ͯ͠Δ ɾೖ ͦͷΫϥεͷ֎͔ΒఆɺมɺΠϯελϯεΛ͋ΔΫϥεʹͿͪ͜Ή͜ͱ ҙ) Ϋϥε͚ͩʹݶΒͳ͍ͱ͍͏͋Δɻ͚Ͳɺ΄ͱΜͲͷ߹ΫϥεʹͳΔͷ
ͰɺҎԼΫϥεʹ͢Δ
1 6 DIͱ ɾͭ·ΓɺԿ͕Կʹґଘ͍ͯ͠Δ? ͱ͋ΔΫϥε͕ɺݻఆͨ͠ଞͷ(ఆɺมɺΫϥεͳͲ)ʹґଘ͍ͯ͠Δ ɾͲ͏͍ͨ͠ͷ? ґଘੑΛͳͨ͘͢Ίʹɺಈతʹಈ࡞Λೖ͠Α͏ͥ! ͬͯ͜ͱ ͭ·Γɺ͋ΔΫϥεͷܾΊଧͪఆɺมɺΠϯελϯεΛഉআͯ͠ɺ֎͔Βೖ͢ Δ͜ͱͰɺಈతʹಈ࡞Λม͑ΒΕΔΑ͏ʹ͢Δ
ɾґଘ͍ͯ͠ΔͱɺԿ͕ݏͳͷ? ֎͔Βಈతʹಈ࡞ΛมߋͰ͖ͳ͍ͷͰɺςετͮ͠Β͍ ܾΊଧͪͳͷͰɺॊೈੑ͕ͳ͘ΧελϚΠζ͠ʹ͍͘
1 7 DIͱ ɾ۩ମతʹͲ͏ࠔΔͷ? ͋ΔΫϥε͚ͩςετ͍ͨ͠ͷʹதʹผͷΫϥε͕ೖ͍ͬͯΔͱςετ͠ʹ͍͘ ςετʹ͕͔͔࣌ؒΔϝιου͕தʹ͋ͬͯςετऴྃʹ͕͔͔࣌ؒΔ ɾͰɺ݁ہͲ͏͠Ζͬͯͷ? ҾͰɺΫϥεมΛ֎͔Βड͚औΕΔΑ͏ʹ͢Δ
1 8 Ϣχοτςετͷྫ Repository Service Controller router
1 9 Ϣχοτςετͷྫ Repository Service Controller router ϞοΫʹ͢Γସ͑Δ
2 0 DIͱ ɾंͰྫ͑ͯΈΔ ʮґଘੑͷߴ͍ंɺಛఆͷϝʔ ΧʔͷύʔπͰݻఆ͞ΕͪΌͬͯ ͍ͯɺΧελϚΠζͰ͖ͳ͍ंʯ ͱ͍͏͜ͱʹͳΔ
2 1 DIͷϝϦοτɾσϝϦοτ ϝϦοτ σϝϦοτ ɾιϑτΤΞͷ֊Λ͖Ε͍ʹͨ͠ઃܭ ͕༰қʹͳΔ ɾίʔυ͕؆ૉʹͳΓɺ։ൃظ͕ؒ͘ͳΔ ɾςετ͕༰қʹͳΓɺʮςετɾϑΝʔετʯ ʹΑΔ։ൃελΠϧΛऔΓ͘͢ͳΔ
ɾ͡Ίʹ͕͔͔Δ߹͕ଟ͍ɻ ɾΫϥεϑΝΠϧ͕ࢁͰ͖Δ ɾϓϩάϥϜͷ࣮ߦεϐʔυ͕͘ͳΔՄೳੑ ͕͋Δ
3 ͍ํ
2 3 ΠϯδΣΫγϣϯͷछྨ ɾίϯετϥΫλΠϯδΣΫγϣϯ - αʔϏεͳͲೖ ɾϝιουΠϯδΣΫγϣϯ - όϦσʔγϣϯͳͲ
2 4 ίϯετϥΫλΠϯδΣΫγϣϯͷྫ
2 5 ͍ํ
2 6 ͍ํ
2 7 ͜ͷ෦ͰόϦσʔγϣ ϯ͕࣮ߦ͞ΕΔ
2 8 ͍ํ
2 9 ͍ํ