ライフサイクル
ライフサイクルとは
プログラムやソフトウェアの開始から終わりまでの一連の段階やプロセスを指します。
Laravelにおけるライフサイクル
エントリポイント
エントリポイントとは、プログラムの実行を開始する場所のことです。
WEBサーバーの設定によりブラウザからのリクエストを受けると/public/index.phpにリダイレクト します。
エントリポイントはこのindex.phpになります。
index.phpの中
/public/index.php
require __DIR__.'/../vendor/autoload.php'; // 【1】autoloadの読み込み
$app = require_once __DIR__.'/../bootstrap/app.php'; // 【2】Applicationインスタンス作成
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); // 【3】HttpKernelインス タンス作成
$response = $kernel->handle( // 【5】Response取得
$request = Illuminate\Http\Request::capture() // 【4】Requestインスタ ンス作成
)->send(); // 【6】Response送信
$kernel->terminate($request, $response); // 【7】terminate()
このindex.phpファイルが、Laravelの処理全体フローそのものになります。
これらの【1】~【7】について説明していきます。
【1】autoloadの読み込み
/public/index.php
require __DIR__.'/../vendor/autoload.php';
/vendor/autoload.phpを読み込むことでオートロード機能1を使用できるようになります。
オートロードとはファイルを自動で読み込む仕組みのことで、他のファイルでのrequireが不要になります。
作成されたファイルは/vendor/composer/autoload_classmap.phpに記述されます。
【2】Applicationインスタンス作成
/public/index.php
$app = require_once __DIR__.'/../bootstrap/app.php';
ここではapp.phpファイルを読み込んでいます。
/bootstrap/app.php
$app = new Illuminate\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)
);
return $app;