1. アプリケーションとサービスコンテナのインスタンスを生成
リクエストが public/index.php
に入り、以下のことが行われる。
- Composerが生成したオートローダーの定義をロード
bootstrap/app.php
を読み込み、アプリケーションとサービスコンテナのインスタンスを生成
サービスコンテナとは?
Laravelのサービスが入った入れ物(諸機能が登録されたクラス)。サービスとは、メール送信、文字列の暗号化、ファイル操作などの挙動を指す。
Laravelへのリクエストのエントリポイント(入り口)は、全て public/index.php
。
2. カーネルを起動する
1が終わると、リクエストはカーネルに送られる。Laravelには、HTTPカーネルとコンソールカーネルの2種類のカーネルがある。
HTTPカーネル
HTTPカーネルは、app/Http/Kernel.php
にあたり、web(HTTP)からのリクエストを対応する。
起動コード(bootstrappers)の配列を定義したり、ミドルウェアの配列(HTTPセッション、CSRFトークン等)などを定義している。
コンソールカーネル
コンソールカーネルは、app/Console/Kernel.php
にあたり、コマンドからのリクエストを対応する。Artisan 系のコマンドや、 app/Console/Commands
ディレクトリにあるコマンドを定義したり、バッチ処理用コマンドを設定したりする。
3. サービスプロバイダーを読み込む(HTTPカーネルの場合)
サービスプロバイダーがconfig/app.php のproviders配列から読み込まれる。
providers配列には、Providersディレクトリのproviderを記載する。
※各providerには、register()とboot()メソッドがあり、register()→boot()の順に実行される。
サービスプロバイダーとは?
サービスコンテナにサービスを登録し、Laravelの全機能を初期化し設定するもの。
4. リクエストをディスパッチする(HTTPカーネルの場合)
リクエストをrouterへ送り、ディスパッチ(プログラムに実行権を渡す)。