ライフサイクル概論
- リクエストのエントリポイントは
public/index.php
- Nginx等から送信される
- このファイルはComposerで生成したオートローダ定義をロードしLaravelアプリケーションインスタンスをbootstrap/index.phpから取得
- 最初のアクションはアプリケーション/サービスコンテナのインスタンス生成
- リクエストタイプに応じて…
- HTTPカーネルかコンソールカーネルへ送信
-
HTTPカーネルに注目
- リクエストが実行される前に実行されるbootstrappersの配列を定義する。
- エラー処理の構成、ログの構成、などの内部設定を処理する
- ミドルウェアを定義する
- 最終的にはResponseを返すブラックボックスとして表現されている
- サービスプロバイダ
- カーネルの初期起動処理アクションの1つ
-
config/app.php
のproviders
配列で構成されている- Laravelがこのプロバイダのリストを繰り返し処理しインスタンス化する
- registerメソッドを呼び出し
- プロバイダを登録し、
- 各プロバイダでbootメソッドを呼び出す
- Laravelが提供する基本的なすべての主機能はサービスプロバイダによって初期起動および設定される。
-
RouteServiceProvider
-
Request
がルータに渡されてディスパッチされる - ルータはルートまたはコントローラへリクエストをディスパッチし
- ルート固有のミドルウェアを実行
-
- ルートかコントローラメソッドがレスポンスを返すと…
- レスポンスはルートのミドルウェアを介して外側へ戻る
- アプリケーションに送信レスポンスを変更または検査する機会を与える
-
http
カーネルのhandle
メソッドがレスポンスオブジェクトを返し -
index.php
ファイルがsend
メソッドを呼ぶ- レスポンスコンテンツをユーザのブラウザに返す。
-
-
AppServiceProvider
- アプリケーション独自の初期起動処理およびサービスコンテナ結合を追加する最適な場所
- 大規模アプリケーションなら特定のサービスに対し、より細かく初期処理を備えたものを作成するべき。
参考