Upgrade to Pro — share decks privately, control downloads, hide ads and more …

index.phpの処理を追ってみた / Dive into index.php

choco
April 23, 2019

index.phpの処理を追ってみた / Dive into index.php

laravel.osaka #14

choco

April 23, 2019
Tweet

Other Decks in Programming

Transcript

  1. index.php <?php define('LARAVEL_START', microtime(true)); require __DIR__.'/../vendor/autoload.php'; // 今日話す部分↓↓ $app =

    require_once __DIR__.'/../bootstrap/app.php'; $kernel = $app->make( Illuminate\Contracts\Http\Kernel::class ); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); // ↑↑ ここまで $response->send(); $kernel->terminate($request, $response);
  2. <?php $app = new Illuminate\Foundation\Application( realpath(__DIR__.'/../') ); $app->singleton( Illuminate\Contracts\Http\Kernel::class, App\Http\Kernel::class

    ); $app->singleton( Illuminate\Contracts\Console\Kernel::class, App\Console\Kernel::class ); $app->singleton( Illuminate\Contracts\Debug\ExceptionHandler::class, App\Exceptions\Handler::class ); return $app;
  3. Container::bind() public function bind( $abstract, $concrete = null, $shared =

    false ) { $this->dropStaleInstances($abstract); if (is_null($concrete)) { $concrete = $abstract; } if (!$concrete instanceof Closure) { $concrete = $this->getClosure( $abstract, $concrete ); }
  4. public function make($abstract, array $parameters = []) { $abstract =

    $this->getAlias($abstract); if (isset($this->deferredServices[$abstract]) && ! isset($this->instances[$abstract]) ) { $this->loadDeferredProvider($abstract); } // Container::resolve() を実行 return parent::make($abstract, $parameters); }
  5. public function handle($request) { try { $request->enableHttpMethodParameterOverride(); $response = $this->sendRequestThroughRouter($request);

    } // catch は省略 $this->app['events']->dispatch( new Events\RequestHandled($request, $response) ); return $response; }