Laravelのライフサイクルを調べてまとめてみた

Laravel

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へ送り、ディスパッチ(プログラムに実行権を渡す)。

タイトルとURLをコピーしました