Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Laravelの良いところ - PHP勉強会 東京 vol.121
Search
fagai
March 14, 2022
13
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Laravelの良いところ - PHP勉強会 東京 vol.121
slideshareにあげていたやつです。
fagai
March 14, 2022
More Decks by fagai
See All by fagai
ニコ生を始めよう - FuelPHP勉強会 東京 vol.2
fagai
0
15
FuelPHPでSentry - FuelPHP勉強会 東京 vol.3
fagai
0
17
Laravel5にアップグレードする際に詰まった点 - Laravel Meetup Tokyo Vol.7
fagai
0
11
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Faster Mobile Websites
deanohume
310
32k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Git: the NoSQL Database
bkeepers
PRO
433
67k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
560
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
Mobile First: as difficult as doing things right
swwweet
225
10k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Transcript
Laravelͷྑ͍ͱ͜Ζ @fagai
Profile • ϑΝΨΠ(@fagai) • ࡚ݝ࡚ࢢग़ɺݱࡏͰ׆ಈ • CALISTA Inc. • LaravelΛਪ͍ͯ͠Δ(ͨͩࠓͷϝΠϯۀphalcon)
• ͨ·ʹΠϥετΛඳ͘/த՚ΠϠϗϯऩूบ
ͦͦLaravelͬͯԿɾɾɾʁ
PHPͷϑϨʔϜϫʔΫͰ͢ɻ • ͍·࠷͍ʁPHPͷϑϨʔϜϫʔΫ • ࠷৽ͷv5.5PHP7Ҏ߱͡Όͳ͍ͱಈ͔ͳ͍ • v5.1ͳΒPHP5.5.9Ҏ্͕ඞཁ
ҙʂ
Laravelͱݴ͍ͬͯ·͕͢ɺ Laravel5.1Ҏ߱Λࢦ͠·͢
Laravelͷྑ͍ͱ͜Ζ • αʔϏείϯςφ(چIoCίϯςφ)͕ڧྗ • ιʔε͕ΫϦʔϯͰ͋Δ(ແବͳιʔε͕গͳ͍) • ج൫ʹSymfony ComponentΛར༻ • ֦ுੑ͕ߴ͍(Service
Provider) • ςετ͕ॻ͖͍͢ ࠓͷ
αʔϏείϯςφʁ
͍ΘΏΔDIίϯςφͰ͢ɻ • LaravelࠜװʹαʔϏείϯςφΛར༻ • جຊతʹΫϥεΛnew͠ͳ͍ݶΓαʔϏε ίϯςφΛඞͣ௨Δ • ϝιουΠϯδΣΫγϣϯػೳ͕͋Δ(͜Ε͕ ඇৗʹڧྗ)
DIͬͯʁ ιϑτʹґଘ͍ͯ͠Δ ήʔϜػ ιϑτʹґଘ͠ͳ͍ήʔϜػ ΠϯλʔϑΣʔε͑͞߹͑ ͳΜͰૠͤΔ
؆୯ͳྫ // όΠϯσΟϯάΛఆٛ app()->bind(PersonInterface::class, Alice::class); app()->make(PersonInterface::class); // Alice͕new͞Εͨͷ͕ฦ͞ ΕΔ //
ΫϩʔδϟʔࢦఆՄೳ app()->bind(FugaInterface::class, function($app) { w w w w return new Fuga(‘aaa’); }); // ఆٛͨ͠ޙ͔ΒՃՄೳ app()->extend(PersonInterface::class, function($person, $app) { w w w w $person->extend = ‘extend’; return $person; });
αʔϏείϯςφΛඞͣ௨Δʁ • ίϯτϩʔϥʔ͕࡞ΒΕΔͱ͖ɺαʔϏε ίϯςφΛܦ༝ͯ͠࡞ΒΕ·͢ • ͜Ε͕ग़དྷΔͷLaravelͷίΞͦͷͷ͕ αʔϏείϯςφ͔ͩΒ • ·ͣαʔϏείϯςφ͕༻ҙ͞ΕͯɺͦΕʹ ରͯ͠ઃఆͳͲ͕Ճ͞Εͯ࠷ऴతʹಈ࡞
͘͢͝؆қతͳΘΕΔྲྀΕ "QQMJDBUJPO ίϯςφ ͕࡞ΒΕΔ 3FRVFTUΧʔωϧ͕࡞ΒΕΔ ίϯςφܦ༝ 3FRVFTU͕࣮ߦ͞Εɺ ϧʔςΟϯάΛݩʹ$POUSPMMFS͕࡞ΒΕΔ ίϯετϥΫλ ϝιουΠϯδΣΫγϣϯ
ϝιουΠϯδΣΫγϣϯʁ
LaravelΛࢧ͑ΔɺڧྗͳΈ • αʔϏείϯςφ͕ΠϯελϯεΛੜ(Ϗϧ υ)͢Δࡍʹɺ • ίϯετϥΫλݺͼग़͢ϝιουͷҾͷ λΠϓώϯςΟϯάΛݩʹͯ͠(Reflection) • ࠶ؼతʹҾΛղܾ͠·͢
ʁ
ίϯςφ͕ΠϯελϯεΛ࡞Ζ͏ͱ͢Δ ΫϥεɺΠϯλʔϑΣʔε໊͕͞ΕΔ ࡞Ζ͏ͱ͍ͯ͠ΔΫϥεɺΠϯλʔϑΣʔε͕ ίϯςφʹొ͞Ε͍ͯΔ Ϋϥε͕ଘࡏ Ϋϥε͕ແ͍ ·ͨ ଞͷԿ͔ ొ
ͳ ͠ ొ͋Γ ΠϯελϯεԽෆՄೳ ΤΠϦΞεͳͲ ΠϯελϯεԽՄೳ Ϋϥε ΫϩʔδϟͳͲ Τϥʔ ίϯετϥΫλɺݺͼग़͢ϝιουͷ ҾΛௐɺղܾͯ͠ͳ͍ͷ͕͋Δ ͳ ͍ ͋Δ ੜͯ͠ฦ͢ ղܾ͍ͯ͠ͳ͍ҾͷΫϥε໊Λ͢
Կ͕ྑ͍ͷ͔ • ιʔε্Ͱnew͢Δඞཁ͕΄΅ͳ͘ͳΔ • =Ϣχοτςετ͘͢͠ͳΔ(֎͔ΒαʔϏεί ϯςφ͕ΫϥεΛೖͯ͘͠ΕΔͷͰϞοΫ͠ ͍͢) • =ॊೈੑ͕ߴ͘ͳΔ(ྫɿΠϯλʔϑΣʔεΛλΠ ϓώϯςΟϯά͢Δ͜ͱͰ݁߹͕Լ͕Δ)
ྫ BookController@indexͷͱ͖
class BookController extends Controller { protected $service; public function __construct(BookService
$service) { $this->service = $service; } public function index(Request $request) { // } } class BookService { protected $bookRepository; public function __construct(BookRepositoryInterface $bookRepository) { $this->bookRepository = $bookRepository; } } ίϯετϥΫλ ΠϯδΣΫγϣϯͰೖ ίϯςφʹొͯ͋͠Δ #PPL3FQPTJUPSZΫϥε͕ ೖ͞ΕΔ app()->bind(BookRepositoryInterface::class, BookRepository::class); όΠϯυΛొ͓ͯ͘͠
• BookControllerͷindexϝιουΛݺͼ͍ͨͱ͍͏͜ͱͰύϥϝʔλΛ ͛Δ(※1) • BookControllerͷίϯετϥΫλΛݟͯɺBookServiceΫϥε͕λΠϓ ώϯτ͞Ε͍ͯΔ͜ͱΛΔ(※2) • BookServiceΫϥείϯςφʹొ͞Ε͍ͯͳ͍͚ͲɺΫϥεͩͬ ͨͷͰ৽͘͠࡞Ζ͏ͱ͢Δ(※1) •
BookServiceΫϥεͷίϯετϥΫλΛݟͯɺ BookRepositoryInterface͕λΠϓώϯτ͞Ε͍ͯΔ͜ͱΛΔ(※2) • BookRepositoryInterfaceBookRepositoryΫϥεΛೖ͢Δ͜ͱ͕ί ϯςφʹ͔͔Ε͍ͯΔͷͰBookRepositoryΛೖͯ͠(※1)ɺ BookServiceΫϥεͷΠϯελϯεΛ࡞Δ • BookControllerͷindexϝιουʹRequestΫϥε͕λΠϓώϯτ͞ Ε͍ͯΔͷͰ(※2)ɺ͜ΕΛೖͯ͠(※1)ϝιουͷ෦ॲཧ͕࢝·Δ
αʔϏείϯςφศརʂ
Laravelͷඍົͳͱ͜Ζ • ଞͷϑϨʔϜϫʔΫͱൺΔͱɺॏྔڃ • ϨϯλϧαʔόʔͳͲͰϝϞϦෆͰॳظઃ ఆ͢Βग़དྷͳ͍ͱ͖ • αʔϏείϯςφͰͯ͢แͯ͠ΔͷͰߴ Ͱ͋Δͱݴ͍ʹ͍͘ •
ॳ৺ऀʹ͍͠
·͊ɺɺɺͰʂ • ͦͦPHP͍ͬͯ͘͢͝༁Ͱͳ͍ • ϨϯαόͰಈ͔͢ͷ΄΅ແ͍ʹ͍͠ • ΑΓɺॻ͖͢͞ɺςετ͢͠͞ॏ ࢹͷ΄͏͕ྑ͍ͱࢥ͏
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ