ライフサイクル

アプリケーションライフサイクル

1. インスタンス化

まず、Slim\App クラスをインスタンス化します。これは Slim アプリケーションオブジェクトです。インスタンス化時に、Slim は各アプリケーション依存関係のデフォルトサービスを登録します。

2. ルートの定義

次に、アプリケーションインスタンスのget()post()put()delete()patch()head()、およびoptions() ルーティングメソッドを使用してルートを定義します。これらのインスタンスメソッドは、アプリケーションの Router オブジェクトにルートを登録します。各ルーティングメソッドは Route インスタンスを返すため、Route インスタンスのメソッドをすぐに呼び出してミドルウェアを追加したり、名前を割り当てたりできます。

3. アプリケーションランナー

3 番目に、アプリケーションインスタンスのrun() メソッドを呼び出します。このメソッドは次のプロセスを開始します。

A. ミドルウェアスタックへの進入

run() メソッドは、アプリケーションのミドルウェアスタックを内側からたどります。これは、Slim アプリケーションが実行される前(および後)に、Environment、Request、Response オブジェクトを受け取り(オプションで操作する)ミドルウェアレイヤーの同心円状の構造です。Slim アプリケーションは、同心円状のミドルウェア構造の最も内側のレイヤーです。各ミドルウェアレイヤーは、最も外側のレイヤーから始まり、内側に呼び出されます。

B. アプリケーションの実行

run() メソッドが最も内側のミドルウェアレイヤーに到達すると、アプリケーションインスタンスを呼び出し、現在の HTTP リクエストを適切なアプリケーションルートオブジェクトにディスパッチします。ルートが HTTP メソッドと URI と一致する場合は、ルートのミドルウェアと callable が呼び出されます。一致するルートが見つからない場合は、Not Found または Not Allowed ハンドラーが呼び出されます。

C. ミドルウェアスタックからの退出

アプリケーションのディスパッチプロセスが完了すると、各ミドルウェアレイヤーは、最も内側のレイヤーから始めて、外側に制御を取り戻します。

D. HTTP レスポンスの送信

最も外側のミドルウェアレイヤーが制御を譲ると、アプリケーションインスタンスは HTTP レスポンスを準備し、シリアル化し、返します。HTTP レスポンスヘッダーは PHP のネイティブなheader() メソッドで設定され、HTTP レスポンスボディは現在の出力バッファーに出力されます。