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メソッドインジェクション
Search
Takayuki
March 28, 2018
Technology
0
420
Laravelメソッドインジェクション
Laravelメソッドインジェクション
Takayuki
March 28, 2018
Tweet
Share
More Decks by Takayuki
See All by Takayuki
地方カンファレンス主催のススメ
bumptakayuki
1
110
Laravelで敢えて試す脆弱性のある書き方
bumptakayuki
1
360
地方でのPHPエンジニア採用って実際どうなの?
bumptakayuki
0
380
沖縄観光、名物を一挙紹介!
bumptakayuki
2
400
Laravel ShiftでLaravelのバージョンアップしてみた話
bumptakayuki
1
1k
flutterでイベントアプリを作ってみた
bumptakayuki
0
91
オフショア開発の辛みと学んだ事
bumptakayuki
0
310
ChatGPTにStripeのサンプルコードを書かせてみた
bumptakayuki
1
130
ChatGPTに記事を書かせてみた
bumptakayuki
1
200
Other Decks in Technology
See All in Technology
JSON攻略法.pdf
miyakemito
8
5k
20240418_Google ColabにLLMが搭載されたようなのでPython x データ分析の勉強方法を考えてみる
doradora09
0
140
GraphQL 成熟度モデルの紹介と、プロダクトに当てはめた事例 / GraphQL maturity model
mh4gf
7
1.3k
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
2.1k
「スニダン」開発組織の構造に込めた意図 ~組織作りはパッションや政治ではない!~
rinchsan
3
570
20分で完全に理解するGrafanaダッシュボード
hamadakoji
3
640
MySQL の SQL クエリチューニングの要所を掴む勉強会
andpad
3
6.4k
DMM.com アルファ室採用案内資料
hsugita
1
140
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
3
170
VS CodeでAWSを操作しよう
smt7174
8
1.7k
生成AIの変革の時代に、直近1年で直面した課題とその解決策
ktc_wada
0
250
KubeConにproposalを送りたい人へのアドバイス
sat
PRO
3
250
Featured
See All Featured
Clear Off the Table
cherdarchuk
84
310k
A designer walks into a library…
pauljervisheath
200
23k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
648
58k
Docker and Python
trallard
34
2.7k
The Illustrated Children's Guide to Kubernetes
chrisshort
31
46k
Building Flexible Design Systems
yeseniaperezcruz
319
37k
Unsuck your backbone
ammeep
663
57k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
25
2.3k
Code Reviewing Like a Champion
maltzj
514
39k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
6
1.5k
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
1 Laravelͷಛ
5 1 Laravelͷಛ ɾۄͶ͗ͷΑ͏ͳߏͰϦΫΤετͱ Ϩεϙϯεͷؒʹ༷ʑͳॲཧΛڬΈࠐ Έ͍͢ɻ ɾόϦσʔγϣϯͳͲ୯ҰͷΤϯςΟ ςΟʹґଘ͢ΔͷͰͳ͘ɺForm୯ ҐͰ࣮Ͱ͖Δɻ MiddleWareͷྫ
ೝ ূ ν Σ ο Ϋɺ ό Ϧ σ ʔ γ ϣ ϯɺ CSRFτʔΫϯͷνΣοΫ
!ʮCakePHPʯʔ2016ͰɺCakePHP͕ओྲྀͰ͕͢ɺ20097݄͝ΖΛϐʔΫʹɺঃʑʹݕࡧ͕ݮগ͍ͯ͠·͢ɻ !ʮLaravelʯʔ2012͝Ζʹొ͠ɺݱࡏCakePHPʹ͙࣍̎൪ਓؾɻগͣͭ͠ݕࡧ্͕ঢɻ !ʮSymfonyʯʔ2008͝ΖCakePHPΛ͍͔͚Δ΄Ͳͷ͍͕͋Γ·͕ͨ͠ɺ2016ͷݱࡏશʹԼՐɻ LaravelҎ֎ͷPHPϑϨʔϜϫʔΫݮগʹ͋ΔΑ͏Ͱ͢ɻ͜͜·Ͱຊࠃ͚ͩΛݟ͖ͯ·ͨ͠ɻ࣍ʹւ֎ͷݱঢ়ΛݟͯΈ·͢ɻ ຊͷPHPϑϨʔϜϫʔΫͷಈ
ຊͱશ͘ঢ়گ͕ҧ͍·͢ɻҰ൪ݕࡧ͞Ε͍ͯΔʢΘΕ͍ͯΔʣͷ੨৭ͷʮLaravelʯɻLaravel্͚͕ͩঢ͠ɺͦͷଞ͕ݮগ ͍ͯ͠Δͱ͍͏ʹ͓͍ͯຊͱಉ͡Ͱ͕͢ɺݱࡏLaravel͕Ұ൪ओྲྀͱͳ͍ͬͯΔ͕ຊͱશ͘ҧ͍·͢ɻຊ Εͯւ֎ͷྲྀΕʹଈ͍ͯ͘͠Ͱ͠ΐ͏͔Βɺ͜ͷ··ʮCakePHPʯ͕ݮগ͠ɺʮLavelʯ͕ओྲྀʹͳ͍͖ͬͯͦ͏Ͱ͢ɻ ੈքͷPHPϑϨʔϜϫʔΫͷಈ ʙੈքͰ͢ͰʹʮLaravelʯ͕ओྲྀʙ
3େϑϨʔϜϫʔΫͷΠϝʔδ(एׯɺओ؍ؚΉ) CakePHP Laravel Symfony ૣ͍ ͍ ͍ ߴ͍ ։ൃ ֶशίετ
2 method Injectionͱ
1 0 DI (Dependency Injectionͷུޠ)ͱ ίϯϙʔωϯτؒͷґଘؔΛϓϩάϥϜͷιʔείʔυ͔Βഉআ͠ɺ֎෦ͷઃఆϑΝ ΠϧͳͲͰೖͰ͖ΔΑ͏ʹ͢ΔιϑτΣΞύλʔϯͰ͋Δɻӳޠͷ಄จࣈ͔ΒDIͱ ུ͞ΕΔɻ !ΫϥεͳͲͰݻఆԽ͞Εͨͷ͕͋ΔͱԿ͕ͳͷ? ɾॊೈੑ͕ͳ͍
ɾςετ͠ʹ͍͘ !ղܾํ๏ ʮґଘ͍ͯ͠Δ෦Λ֎͔Βೖ͢Δʯ
11 DIʹ͓͚Δʮґଘੑʯͱʮೖʯͷҙຯ ɾґଘੑ (େࡶʹ)ͱ͋ΔΫϥεʹɺݻఆͷఆɺมɺΠϯελϯε͕ೖͬͪΌ͍ͬͯΔঢ়ଶ ͭ·ΓͦͷΫϥεɺͦͷఆɺมɺΠϯελϯεʹґଘ͍ͯ͠Δ ɾೖ ͦͷΫϥεͷ֎͔ΒఆɺมɺΠϯελϯεΛ͋ΔΫϥεʹͿͪ͜Ή͜ͱ ҙ) Ϋϥε͚ͩʹݶΒͳ͍ͱ͍͏͋Δɻ͚Ͳɺ΄ͱΜͲͷ߹ΫϥεʹͳΔͷ ͰɺҎԼΫϥεʹ͢Δ
1 2 DIͱ ɾͭ·ΓɺԿ͕Կʹґଘ͍ͯ͠Δ? ͱ͋ΔΫϥε͕ɺݻఆͨ͠ଞͷ(ఆɺมɺΫϥεͳͲ)ʹґଘ͍ͯ͠Δ ɾͲ͏͍ͨ͠ͷ? ґଘੑΛͳͨ͘͢Ίʹɺಈతʹಈ࡞Λೖ͠Α͏ͥ! ͬͯ͜ͱ ͭ·Γɺ͋ΔΫϥεͷܾΊଧͪఆɺมɺΠϯελϯεΛഉআͯ͠ɺ֎͔Βೖ͢ Δ͜ͱͰɺಈతʹಈ࡞Λม͑ΒΕΔΑ͏ʹ͢Δ
ɾґଘ͍ͯ͠ΔͱɺԿ͕ݏͳͷ? ֎͔Βಈతʹಈ࡞ΛมߋͰ͖ͳ͍ͷͰɺςετͮ͠Β͍ ܾΊଧͪͳͷͰɺॊೈੑ͕ͳ͘ΧελϚΠζ͠ʹ͍͘
1 3 DIͱ ɾ۩ମతʹͲ͏ࠔΔͷ? ͋ΔΫϥε͚ͩςετ͍ͨ͠ͷʹதʹผͷΫϥε͕ೖ͍ͬͯΔͱςετ͠ʹ͍͘ ςετʹ͕͔͔࣌ؒΔϝιου͕தʹ͋ͬͯςετऴྃʹ͕͔͔࣌ؒΔ ɾͰɺ݁ہͲ͏͠Ζͬͯͷ? ҾͰɺΫϥεมΛ֎͔Βड͚औΕΔΑ͏ʹ͢Δ
1 4 DIͱ ɾंͰྫ͑ͯΈΔ ͔݁Βݴ͏ͱɺ ʮґଘੑͷߴ͍ंɺಛఆͷϝʔ ΧʔͷύʔπͰݻఆ͞ΕͪΌͬͯ ͍ͯɺΧελϚΠζͰ͖ͳ͍ंʯ ͱ͍͏͜ͱʹͳΔ
1 5 DIͷϝϦοτɾσϝϦοτ ϝϦοτ σϝϦοτ ɾιϑτΤΞͷ֊Λ͖Ε͍ʹͨ͠ઃܭ ͕༰қʹͳΔ ɾίʔυ͕؆ૉʹͳΓɺ։ൃظ͕ؒ͘ͳΔ ɾςετ͕༰қʹͳΓɺʮςετɾϑΝʔετʯ ʹΑΔ։ൃελΠϧΛऔΓ͘͢ͳΔ
ɾಛఆͷϑϨʔϜϫʔΫͷґଘੑ͕ۃখʹͳ ΔͨΊɺมԽʹڧ͍ιϑτΤΞΛ࡞Γ͘͢ ͳΔʢʹϑϨʔϜϫʔΫͷਐԽɺଞͷϑϨʔ ϜϫʔΫͷҠߦʹରԠ͘͢͠ͳΔʣ ɾ͡Ίʹ͕͔͔Δ߹͕ଟ͍ͱࢥΘΕΔ ΫϥεΛͨ͘͞Μ࡞ΔͷͰ(େͷ߹) ɾϓϩάϥϜͷ࣮ߦεϐʔυ͕͘ͳΔՄೳੑ ͕ߴ͍ ɾΫϥεϑΝΠϧ͕ࢁͰ͖Δ
1 6 Πϝʔδ
3 ͍ํ
1 8 ΠϯδΣΫγϣϯͷछྨ ɾίϯετϥΫλΠϯδΣΫγϣϯ └αʔϏεͳͲೖ ɾϝιουΠϯδΣΫγϣϯ └όϦσʔγϣϯͳͲ
1 9 ͍ํ
2 0 ͍ํ
2 1 ͍ํ
2 2 ͍ํ