Laravelのリクエスト(Request)のライフサイクルを学びます
3697 ワード
概要
現実の世界でツールを使うとき、ツールの動作原理を理解すれば、より底力があります.アプリケーション開発もそうです.開発ツールがどのように機能しているかを理解すると、より自由に使用できます.このドキュメントの目的は、Laravelフレームワークの実行方法を把握するための高レベルの概要を提供することです.フレームワーク全体をよりよく理解した後、フレームワークのコンポーネントと機能はそんなに神秘的ではなく、アプリケーションを開発するのももっと手応えがあります.このドキュメントには、リクエストライフサイクルに関する高レベルの概要と、起動ファイルとアプリケーションイベントに関する内容が含まれています.
すべての用語をすぐに理解できない場合は、落胆しないで、まず大体の把握を持って、ドキュメントの他の章を読む過程で知識を蓄積し、消化し続けることができます.
要求ライフサイクル
アプリケーションに送信すべてのリクエストはpublic/indexを経由する.phpスクリプト処理.Apacheサーバを使用する場合、Laravelに含まれます.htaccessファイルは、すべてのリクエストを処理してindexに渡す.php.これはLaravelがクライアント要求を受け入れることからクライアントに応答することに戻るまでのプロセス全体の始まりです.Laravelのブートプロセス(bootstrap process)について大まかな認識ができれば,フレームワークの理解に役立つだろうが,まずこれについて議論してみよう.
これまでLaravelブートプロセスを学ぶ上で最も重要な概念はサービスプロバイダです.app/config/appを開きます.phpプロファイル、providers配列を見つけると、サービスプロバイダのリストが表示されます.これらのプロバイダはLaravelの主なブートメカニズムとして機能します.サービスプロバイダに深く入る前にindexに戻ります.phpの議論.リクエストがindexに入るとphpファイル、bootstrap/start.phpファイルがロードされます.このファイルは、フレームワークのIoCコンテナとして同時に使用されるLaravelアプリケーションオブジェクトを作成します.
Applicationオブジェクトの作成が完了すると、フレームワークはいくつかのパス情報を設定し、環境検出を実行します.その後、Laravelソースコードの内部にあるブートスクリプトが実行され、プロファイルに基づいてタイムゾーン、エラーレポートなどのその他の情報が設定されます.これらの些細な構成オプションの構成に加えて、スクリプトはアプリケーションに構成されたすべてのサービスプロバイダを登録することが重要です.
簡単なサービスプロバイダにはregisterという方法しか含まれていません.アプリケーション・オブジェクトが独自のregisterメソッドでサービス・プロバイダを登録すると、そのサービス・プロバイダのregisterメソッドが呼び出されます.サービスプロバイダはこの方法でIoCコンテナに何かを登録します.本質的には、各サービスプロバイダは1つ以上の閉パケットをコンテナにバインドし、これらの閉パケットを通じてアプリケーションにバインドされたサービスにアクセスできます.たとえば、QueueServiceProviderは、キューに関連付けられた複数のクラスを使用するために複数の閉パッケージを登録します.もちろん、サービスプロバイダは、IoCコンテナにコンテンツを登録することに限らず、任意のブート特性のタスクに使用することができる.サービスプロバイダは、イベントリスナー、ビュー合成器、Artisanコマンドなどを登録できます.
すべてのサービスプロバイダを登録するとapp/startのファイルがロードされます.最後にapp/routes.phpファイルがロードされます.いったんphpファイルがロードされ、Requestオブジェクトがアプリケーションオブジェクトに送信され、ルーティングに送信されます.
まとめてみましょう.
要求はpublic/indexに入る.phpファイル.bootstrap/start.phpファイルはアプリケーションオブジェクトを作成し、環境を検出します.内部のframework/start.phpファイルは、関連する設定を構成し、サービスプロバイダをロードします.アプリケーションapp/startディレクトリの下にあるファイルをロードします.アプリケーションのapp/routesをロードします.phpファイル.Requestオブジェクトをアプリケーションオブジェクトに送信し、アプリケーションオブジェクトはResponseオブジェクトを返します.Responseオブジェクトをクライアントに返信します.Laravelアプリケーションが送信されたリクエストをどのように処理しているかを把握しているはずです.起動ファイルを見てみましょう.
起動ファイル
アプリケーションの起動ファイルはapp/startディレクトリに格納されます.デフォルトでは、このディレクトリにはglobalという3つのファイルが含まれています.php、local.phpとartisan.phpファイル.artisanについてもっと入手する必要があります.phpの情報は、ドキュメントArtisanコマンドラインを参照できます.
global.php起動ファイルのデフォルトには、ログの登録やapp/filtersのロードなどの基本的な項目が含まれています.phpファイル.しかし、この書類でやりたいことをすることができます.どの環境でも自動的に含まれます.それぞれ_requestで.そしてlocal.phpファイルはlocal環境でのみ実行されます.環境の詳細については、ドキュメント構成を参照してください.
もちろん、local環境以外に他の環境がある場合は、これらの環境に対して起動ファイルを作成することもできます.これらのファイルは、アプリケーションが環境で実行されたときに自動的に含まれます.bootstrap/startにいるとします.phpファイルにはdevelopment環境が構成されており、app/start/developmentを作成できます.phpファイルは、その環境でアプリケーションにアクセスする要求に含まれます.
起動ファイルに何を保存しますか?
起動ファイルは、主にブートプロパティのコードを格納するために使用されます.たとえば、起動ファイルにビュー合成器を登録したり、ログ情報を構成したり、PHP設定をしたりすることができます.具体的に何をするかはあなた次第です.もちろん、すべてのブートコードを起動ファイルに捨てると、起動ファイルが乱雑になります.大規模なアプリケーションでは、起動ファイルが雑然としているか、一部のブートコードをサービスプロバイダに移動することを考慮してください.
アプリケーションイベント
また、before、after、finish、shutdownアプリケーションイベントを登録して、requestを処理する前または後にいくつかの操作を行うこともできます.
アプリケーションイベントの登録
これらのイベントのリスナーは、アプリケーションに到達する各リクエスト処理の前または後に実行されます.これらのイベントを使用してグローバルフィルタ(filter)を設定するか、クライアントに返信する応答(response)を統一的に変更できます.これらのイベントは、起動ファイルまたはサービスプロバイダに登録できます.
アプリケーションからの応答がクライアントに送信されるとfinishイベントがトリガーされます.このイベントは、アプリケーションを処理するために必要な最後の終了作業に適しています.すべてのfinishイベントのリスナーが実行されるとすぐにshutdownイベントがトリガーされ、スクリプトが終了する前に何かをしたい場合は、これが最後のチャンスです.しかし、多くの場合、これらのイベントを使用する必要はありません.
現実の世界でツールを使うとき、ツールの動作原理を理解すれば、より底力があります.アプリケーション開発もそうです.開発ツールがどのように機能しているかを理解すると、より自由に使用できます.このドキュメントの目的は、Laravelフレームワークの実行方法を把握するための高レベルの概要を提供することです.フレームワーク全体をよりよく理解した後、フレームワークのコンポーネントと機能はそんなに神秘的ではなく、アプリケーションを開発するのももっと手応えがあります.このドキュメントには、リクエストライフサイクルに関する高レベルの概要と、起動ファイルとアプリケーションイベントに関する内容が含まれています.
すべての用語をすぐに理解できない場合は、落胆しないで、まず大体の把握を持って、ドキュメントの他の章を読む過程で知識を蓄積し、消化し続けることができます.
要求ライフサイクル
アプリケーションに送信すべてのリクエストはpublic/indexを経由する.phpスクリプト処理.Apacheサーバを使用する場合、Laravelに含まれます.htaccessファイルは、すべてのリクエストを処理してindexに渡す.php.これはLaravelがクライアント要求を受け入れることからクライアントに応答することに戻るまでのプロセス全体の始まりです.Laravelのブートプロセス(bootstrap process)について大まかな認識ができれば,フレームワークの理解に役立つだろうが,まずこれについて議論してみよう.
これまでLaravelブートプロセスを学ぶ上で最も重要な概念はサービスプロバイダです.app/config/appを開きます.phpプロファイル、providers配列を見つけると、サービスプロバイダのリストが表示されます.これらのプロバイダはLaravelの主なブートメカニズムとして機能します.サービスプロバイダに深く入る前にindexに戻ります.phpの議論.リクエストがindexに入るとphpファイル、bootstrap/start.phpファイルがロードされます.このファイルは、フレームワークのIoCコンテナとして同時に使用されるLaravelアプリケーションオブジェクトを作成します.
Applicationオブジェクトの作成が完了すると、フレームワークはいくつかのパス情報を設定し、環境検出を実行します.その後、Laravelソースコードの内部にあるブートスクリプトが実行され、プロファイルに基づいてタイムゾーン、エラーレポートなどのその他の情報が設定されます.これらの些細な構成オプションの構成に加えて、スクリプトはアプリケーションに構成されたすべてのサービスプロバイダを登録することが重要です.
簡単なサービスプロバイダにはregisterという方法しか含まれていません.アプリケーション・オブジェクトが独自のregisterメソッドでサービス・プロバイダを登録すると、そのサービス・プロバイダのregisterメソッドが呼び出されます.サービスプロバイダはこの方法でIoCコンテナに何かを登録します.本質的には、各サービスプロバイダは1つ以上の閉パケットをコンテナにバインドし、これらの閉パケットを通じてアプリケーションにバインドされたサービスにアクセスできます.たとえば、QueueServiceProviderは、キューに関連付けられた複数のクラスを使用するために複数の閉パッケージを登録します.もちろん、サービスプロバイダは、IoCコンテナにコンテンツを登録することに限らず、任意のブート特性のタスクに使用することができる.サービスプロバイダは、イベントリスナー、ビュー合成器、Artisanコマンドなどを登録できます.
すべてのサービスプロバイダを登録するとapp/startのファイルがロードされます.最後にapp/routes.phpファイルがロードされます.いったんphpファイルがロードされ、Requestオブジェクトがアプリケーションオブジェクトに送信され、ルーティングに送信されます.
まとめてみましょう.
要求はpublic/indexに入る.phpファイル.bootstrap/start.phpファイルはアプリケーションオブジェクトを作成し、環境を検出します.内部のframework/start.phpファイルは、関連する設定を構成し、サービスプロバイダをロードします.アプリケーションapp/startディレクトリの下にあるファイルをロードします.アプリケーションのapp/routesをロードします.phpファイル.Requestオブジェクトをアプリケーションオブジェクトに送信し、アプリケーションオブジェクトはResponseオブジェクトを返します.Responseオブジェクトをクライアントに返信します.Laravelアプリケーションが送信されたリクエストをどのように処理しているかを把握しているはずです.起動ファイルを見てみましょう.
起動ファイル
アプリケーションの起動ファイルはapp/startディレクトリに格納されます.デフォルトでは、このディレクトリにはglobalという3つのファイルが含まれています.php、local.phpとartisan.phpファイル.artisanについてもっと入手する必要があります.phpの情報は、ドキュメントArtisanコマンドラインを参照できます.
global.php起動ファイルのデフォルトには、ログの登録やapp/filtersのロードなどの基本的な項目が含まれています.phpファイル.しかし、この書類でやりたいことをすることができます.どの環境でも自動的に含まれます.それぞれ_requestで.そしてlocal.phpファイルはlocal環境でのみ実行されます.環境の詳細については、ドキュメント構成を参照してください.
もちろん、local環境以外に他の環境がある場合は、これらの環境に対して起動ファイルを作成することもできます.これらのファイルは、アプリケーションが環境で実行されたときに自動的に含まれます.bootstrap/startにいるとします.phpファイルにはdevelopment環境が構成されており、app/start/developmentを作成できます.phpファイルは、その環境でアプリケーションにアクセスする要求に含まれます.
起動ファイルに何を保存しますか?
起動ファイルは、主にブートプロパティのコードを格納するために使用されます.たとえば、起動ファイルにビュー合成器を登録したり、ログ情報を構成したり、PHP設定をしたりすることができます.具体的に何をするかはあなた次第です.もちろん、すべてのブートコードを起動ファイルに捨てると、起動ファイルが乱雑になります.大規模なアプリケーションでは、起動ファイルが雑然としているか、一部のブートコードをサービスプロバイダに移動することを考慮してください.
アプリケーションイベント
また、before、after、finish、shutdownアプリケーションイベントを登録して、requestを処理する前または後にいくつかの操作を行うこともできます.
アプリケーションイベントの登録
App::before(function($request)
{
//
});
App::after(function($request, $response)
{
//
});
これらのイベントのリスナーは、アプリケーションに到達する各リクエスト処理の前または後に実行されます.これらのイベントを使用してグローバルフィルタ(filter)を設定するか、クライアントに返信する応答(response)を統一的に変更できます.これらのイベントは、起動ファイルまたはサービスプロバイダに登録できます.
アプリケーションからの応答がクライアントに送信されるとfinishイベントがトリガーされます.このイベントは、アプリケーションを処理するために必要な最後の終了作業に適しています.すべてのfinishイベントのリスナーが実行されるとすぐにshutdownイベントがトリガーされ、スクリプトが終了する前に何かをしたい場合は、これが最後のチャンスです.しかし、多くの場合、これらのイベントを使用する必要はありません.