ちょっと深掘りLaravelライフサイクル
by
k-kurikuri
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ͪΐͬͱਂ۷Γ LaravelϥΠϑαΠΫϧ #Laravel͘͘ձ@දࢀಓ @k_kurikuri
Slide 2
Slide 2 text
ࣗݾհ • ιʔγϟϧήʔϜ։ൃΤϯδχΞ • Laravelྺ2 (4.2, 5.0, 5.1LTS) • ࣾ༻ͷComposerϥΠϒϥϦ࡞ͬͨΓ • Unityͱ͔ΫϥΠΞϯταΠυ৮Γ·͢
Slide 3
Slide 3 text
͍Α͍ΑLaravel 5.5 LTS͕ ϦϦʔε͞Ε·͢Ͷʂ
Slide 4
Slide 4 text
ͱ͜ΖͰօ͞Μ LaravelͷϥΠϑαΠΫϧ ਂ۷Γͯ͠·͔͢ʁ
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
ਂ۷Γ͠ͳͯ͘… • MVC, MiddlewareͳͲ֤ػೳͷ͍ํ͕Θ͔Ε WebαʔϏε։ൃՄೳ • ࢲΛྫʹ͢ΔͱKernel, ContainerͳͲWebαʔ Ϗε։ൃͰ͋·Γҙࣝͨ͠ࣄͳ͔ͬͨ • ΧελϚΠζ͢Δ࣌ʹߏΛਂ͓ͬͯ͘͘ ࣄ͕େ
Slide 7
Slide 7 text
ຊ͢༰ index.php Kernel Container Service Provider Middleware Router View
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
index.php • ॲཧͷΤϯτϦϙΠϯτ(ϑϩϯτίϯτϩʔϥʔ) • AutoloaderͷಡΈࠐΈ • bootstrap/app.phpΛಡΈࠐΈίϯςφΛੜ • KernelΛੜ͠handleϝιουΛݺͼग़͢ • ͋Ε͜Εͨ͠ޙɺResponseΛΫϥΠΞϯτΛฦ͢
Slide 10
Slide 10 text
make(Illuminate\Contracts\Http\Kernel::class); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); $response->send(); $kernel->terminate($request, $response);
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
Kernel • ϒϥοΫϘοΫεʹΞϓϦέʔγϣϯશମΛૢ࡞͢ΔΫϥε • Http͔ConsoleϦΫΤετʹΑͬͯੜ͢ΔKernelΫϥε͕มΘΔ • handleϝιουͰΞϓϦέʔγϣϯͷ͋Ε͜ΕΛૢ࡞ • Env, Config, Handler, Facade, Service ProviderͷॳظԽॲཧ • PipelineΫϥεΛ༻͠MiddlewareͷϋϯυϦϯάɾRouterͱ ControllerσΟεύονΛߦ͏
Slide 13
Slide 13 text
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
Application (Container) • αʔϏείϯςφͱͯ͠ΠϯελϯεͷཧΛߦ͏ • KernelͱผʹLog, Event, RoutingͷServiceProviderΛ ཧ͍ͯ͠Δ • Laravelόʔδϣϯɺ.envϑΝΠϧ໊ΛϓϩύςΟʹ࣋ͭ • Kernel͔ΒґཔΛड͚ServiceProviderͷregisterΛݺͼ ग़͢
Slide 16
Slide 16 text
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
Service Provider • αʔϏε(֤ػೳ)ʹಛԽͨ͠ॳظԽΫϥε • ओʹregister, bootϝιουͰߏ͞ΕΔ • registerίϯςφʹొ͢ΔͨΊͷϝιου • bootregisterͷޙʹݺΕΔͨΊશͯͷ ServiceProviderʹΞΫηεͰ͖ΔɻArtisan vendor:publishͱ͔͜͜Ͱߦ͏
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
Middleware • Controllerͷࣄલɾࣄޙʹߦ͏ϑΟϧλʔ • શϧʔτʹର͢ΔϑΟϧλϦϯάͱɺಛఆͷ ϧʔτʹϑΟϧλϦϯάͰ͖Δ • ϝϯςφϯεϞʔυɾCSRFτʔΫϯશϧʔ τͷϑΟϧλϦϯάɻೝূͳͲಛఆϧʔτ ʹͷΈૢ࡞͞ΕΔ
Slide 21
Slide 21 text
/** * Send the given request through the middleware / router. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ protected function sendRequestThroughRouter($request) { $this->app->instance('request', $request); Facade::clearResolvedInstance('request'); $this->bootstrap(); return (new Pipeline($this->app)) ->send($request) ->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware) ->then($this->dispatchToRouter()); }
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
Router • RequestΛड͚औΓControllerͷDispatchΛ ߦ͏ • ಛఆϧʔτͷMiddlewareΛ࣮ߦ͢Δ • ControllerDispatcherΫϥεΛ௨ͯ͡ ControllerͷΞΫγϣϯΛݺͼग़͢
Slide 24
Slide 24 text
/** * Run the route action and return the response. * * @return mixed * * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException */ protected function runController() { return (new ControllerDispatcher($this->container)) ->dispatch( $this, $this->getController(), $this->getControllerMethod() ); }
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
View • Viewੜ͢ΔFactory͕BladeΛಡΈࠐΉ • ಡΈࠐΜͩBladeViewΫϥεͱͯ͠ѻΘΕΔ • ResponseΦϒδΣΫτʹView͕ηοτ͞Ε renderϝιουΛݺͼग़͠ίϯςϯπ͕ฦ͞ ΕΔ
Slide 27
Slide 27 text
original = $content; if ($this->shouldBeJson($content)) { $this->header('Content-Type', 'application/json'); $content = $this->morphToJson($content); } elseif ($content instanceof Renderable) { $content = $content->render(); } return parent::setContent($content); }
Slide 28
Slide 28 text
·ͱΊ • WebαʔϏε։ൃ͢Δͷʹࡉ͔͘Βͳͯ͘࡞ΕΔ͚Ͳ… • LaravelͷϕʔεΛϓϩδΣΫτ༻ʹΧελϚΠζ͢Δ߹ ߏͷཧղඞਢ • Docsͱ߹ΘͤͯιʔείʔυಡΉͷ͕ਂ͍ཧղʹܨ͕Δ • PhpStormͳͲIDEͰιʔείʔυΛಡΉͱϗϫΠτϘοΫε Խͷॿ͚ʹ
Slide 29
Slide 29 text
ಓ۩Λཧղ͠ ΑΓྑ͍LaravelϥΠϑΛʂ