ホームページ  >  記事  >  PHPフレームワーク  >  Laravelのリクエストからレスポンスまでのライフサイクル

Laravelのリクエストからレスポンスまでのライフサイクル

藏色散人
藏色散人転載
2019-11-05 13:51:362209ブラウズ

Laravel のリクエストからレスポンスまでの実行プロセス全体は、プログラム起動準備段階、リクエストインスタンス化段階、リクエスト処理段階、レスポンス送信段階、プログラム終了段階の 4 つの段階にまとめることができます。

#プログラム起動準備フェーズ

サービス コンテナのインスタンス化

サービス コンテナのインスタンス化と基本登録 (サービスを含む) コンテナそれ自体が登録され、基本サービスプロバイダーが登録され、コアカテゴリ名が登録され、アプリケーションの基本パスが登録されます。登録されるサービスは特定のクラス名のみであり、オブジェクトはリフレクション機構を通じてインスタンス化され、コンストラクター内の依存関係はリフレクション機構を通じて自動的に解決されます。

コアクラスのインスタンス化

コアクラスのインスタンス化とは、サービスコンテナをインスタンス化した後、コアクラス名でサービスを登録することで得られる、サービスコンテナの自動インスタンス化オブジェクトです。例: Index.php でのカーネル クラスのインスタンス化:

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

リクエストのインスタンス化フェーズ

リクエストは、クライアントによって送信されるリクエスト メッセージであり、リクエスト行、Request が含まれます。ヘッダーとリクエストエンティティ。 Laravel はリクエストを Illuminate\Http\Request クラスのインスタンス オブジェクトに分類して保存します。これはリクエストをインスタンス オブジェクトに変換することを意味します。リクエストインスタンスの作成は、Illuminate\Http\Request クラスの capture() 静的メソッドを通じて完了します。つまり:

$request = Illuminate\Http\Request::capture();

しかし、capture() メソッドでは、Laravel のリクエスト インスタンスがSymfony リクエスト インスタンスに基づいて作成されます。 Symfony は、PHP のグローバル配列 $_GET、$_POST、$_COOKIE、$_FILE、$_SERVER をパラメーターとして使用してリクエストをインスタンス化します。

リクエスト処理フェーズ

リクエスト処理フェーズでは、まず環境の読み込み、サービス プロバイダーの登録など、リクエスト処理のための環境を準備してから、リクエスト インスタンスを渡します。ミドルウェア経由 ルーティングとコントローラーによる処理と配布の制御、対応するハンドラーを通じてさまざまなリクエストを処理し、応答を生成するプロセス。

レスポンス送信とプログラム終了フェーズ

レスポンス送信

Laravel のレスポンス処理クラスは Illuminate\Http\Response クラスです、このクラスの最下層も Symfony の Response クラスにあります。応答の送信には、応答ヘッダー情報の送信と応答本文の内容の送信の 2 つの部分が含まれます。

プログラムの終了

Laravel では、主に終了プログラムが終了ミドルウェアの呼び出しを完了します。

以上がLaravelのリクエストからレスポンスまでのライフサイクルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
前の記事:laravel yiiの違い次の記事:laravel yiiの違い