リクエストサイクル


サービスプロバイダーに焦点を当てる

#ライフサイクルの概要

まず第一に

Laravelアプリケーションのすべてのリクエストエントリは、public/index.phpファイルです。すべてのリクエストは、設定を通じて Web サーバー (Apache/Nginx) 経由でこのファイルに送信されます。 index.php このファイルには多くのコードはありませんが、フレームワークの残りの部分を読み込むための開始点となります。

index.php ファイルは、Composer によって生成された自動ロード設定をロードし、bootstrap/app.php スクリプトから Laravel アプリケーションのインスタンスを取得します。 Laravel 自体によって実行される最初のアクションは、アプリケーション/サービス コンテナーを作成することです。

HTTP/コンソール カーネル

次に、アプリケーションに受信するリクエストの種類に応じて、受信リクエストが HTTP カーネルまたはコンソール カーネルに送信されます。これら 2 つのコアは、すべてのリクエストが通過する中心的な場所として使用されます。次に、app/Http/Kernel.php にある HTTP カーネルを見てみましょう。

HTTP カーネルは、bootstrappers の配列を定義する Illuminate\Foundation\Http\Kernel クラスを継承します。この配列のクラスは、リクエストが実行される前に実行され、これらのブートストラップは、エラー処理、ログ記録、アプリケーション環境のチェック、およびリクエストが処理される前に実行する必要があるその他のタスクを構成します。

HTTP コアは、アプリケーションによって処理される前にすべてのリクエストが通過する必要がある HTTP ミドルウェアも定義します。これらのミドルウェアは、HTTP セッションの読み取りと書き込みを処理し、アプリケーションがメンテナンス モードであるかどうかを判断し、CSRF トークンを検証します。

HTTP コアの handle メソッド シグネチャは非常に単純です。Request を取得し、Response を返します。このカーネルは、HTTP リクエストを受け取り、HTTP レスポンスを返す、アプリケーション全体を表す大きなブラック ボックスであると考えてください。

サービス プロバイダー

カーネルの起動操作で最も重要なことは、適用するサービス プロバイダーです。すべてのアプリケーションのサービス プロバイダーは、config/app.php 構成ファイルの providers 配列で構成されます。最初のステップでは、すべてのサービス プロバイダーの register メソッドが呼び出され、すべてのサービス プロバイダーが登録されると、boot メソッドが呼び出されます。

サービス プロバイダーを使用すると、フレームワークでデータベース、キュー、バリデーター、ルーティング コンポーネントなどのさまざまなコンポーネントを開くことができます。サービスプロバイダーが開始されている限り、フレームワークのすべての機能を制御できるため、サービスプロバイダーはLaravelのブートサイクル全体の最も重要な部分でもあります。

リクエスト スケジューリング

開始され、すべてのサービス プロバイダーが登録されると、リクエストがルーターに配信されます。ルーターは、バインドされたルートまたはコントローラー、そしてもちろんルートバインドのミドルウェアにリクエストをディスパッチします。

サービスプロバイダーに注目

サービスプロバイダーは、Laravel の真のライフサイクルの鍵です。アプリケーション インスタンスが作成されると、サービス プロバイダーが登録され、起動されたアプリケーションによって引き継がれることが要求されます。単純にする!

サービスプロバイダーがどのように構築され、サービスプロバイダーがLaravelアプリケーションとどのように連携するかをしっかりと把握することは非常に価値があります。もちろん、アプリケーションのデフォルトのサービスプロバイダーは app/Providers に保存されます。

デフォルトでは、AppServiceProvider は空白です。このプロバイダーは、アプリケーション独自のブートストラップ処理とサービス コンテナー バインディングを追加するのに適しています。もちろん、大規模なプロジェクトでは、よりきめ細かいサービス プロバイダーをいくつか作成することができます。

この記事は、LearnKu.com Web サイトで初めて公開されました。