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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Takayuki
July 15, 2018
Technology
250
1
Share
Laravel_メソッドインジェクション_0715
Takayuki
July 15, 2018
More Decks by Takayuki
See All by Takayuki
Laravel Applications with DDD x Clean Architecture x Vibe Coding
bumptakayuki
1
120
Laravel × Clean Architecture
bumptakayuki
1
520
エンジニアのキャリア論
bumptakayuki
1
280
地方カンファレンス主催のススメ
bumptakayuki
1
250
Laravelで敢えて試す脆弱性のある書き方
bumptakayuki
2
1.3k
地方でのPHPエンジニア採用って実際どうなの?
bumptakayuki
0
780
沖縄観光、名物を一挙紹介!
bumptakayuki
2
770
Laravel ShiftでLaravelのバージョンアップしてみた話
bumptakayuki
1
3.3k
flutterでイベントアプリを作ってみた
bumptakayuki
0
200
Other Decks in Technology
See All in Technology
JTCでRedmine利用者2700人を実現した手法 第二部
nobuonakamura
0
110
AWS WAFの運用を地道に改善し、自社で運用可能にするプラクティス
andpad
1
210
Sociotechnical Architecture Reviews: Understanding Teams, not just Artefacts
ewolff
1
170
いつの間にかデータエンジニア以外の業務も増えていたけど、意外と経験が役に立ってる
zozotech
PRO
0
590
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
4
180
小さいVue.jsを30分で作る
hal_spidernight
0
160
AI対話分析の夢と、汚いデータの現実 Looker / Dataplex / Dataform で実現する品質ファーストな基盤設計
waiwai2111
0
520
サイボウズ、プラットフォームエンジニアリング始めるってよ ― プラットフォームチームの事業貢献と組織アラインメントの強化
ueokande
0
110
Every Conversation Counts
kawaguti
PRO
0
230
セキュリティ対策、何からはじめる? CloudNative環境の脅威モデリングと リスク評価実践入門 #cloudnativekaigi
varu3
5
920
CyberAgent YJC Connect
shimaf4979
1
190
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
100k
Featured
See All Featured
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
230
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
530
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
520
Optimizing for Happiness
mojombo
378
71k
Rails Girls Zürich Keynote
gr2m
96
14k
The Curse of the Amulet
leimatthew05
1
12k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Unsuck your backbone
ammeep
672
58k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
170
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 ͍ํ