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͸ίϯςφʹొ࿥͢ΔͨΊͷϝιου • boot͸registerͷޙʹݺ͹ΕΔͨΊશͯͷ 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ΛಡΈࠐΉ • ಡΈࠐΜͩBlade͸ViewΫϥεͱͯ͠ѻΘΕΔ • 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ϥΠϑΛʂ