PHPミドルウェアは、クライアントリクエストを処理する前または後に追加のロジックをアプリケーションに挿入するための一般的なメカニズムです。ミドルウェアを通じて、開発者は、リクエスト処理プロセスでリクエストの確認、ロギング、その他の機能など、カスタマイズされた操作を柔軟に追加できます。この記事では、PHPミドルウェアの実装原則を詳細に紹介します。
リクエストがPHPアプリケーションに到着すると、一連のミドルウェアを介して処理されます。各ミドルウェアには、リクエストを確認したり、リクエストコンテンツを変更したり、応答を直接返す機会があります。ミドルウェアが応答を返す場合、リクエストのライフサイクルが終了し、後続のミドルウェアは引き続き実行されません。
ミドルウェアクラスは、 MiddlewareInterfaceインターフェイスを実装する必要があります。このインターフェイスは、2つの重要な方法を定義します: process()とsetNext() 。
Process()メソッドはリクエストの処理を担当し、2つのパラメーターを受信します: ServerRequestInterfaceとRequestHandlerInterfaceオブジェクト。 ServerRequestInterfaceにはリクエストに関する詳細情報が含まれていますが、 RequestHandlerInterfaceは次のミドルウェアまたはアプリケーションのコールバック関数です。この方法により、ミドルウェアはリクエストコンテンツを変更したり、応答を返したり、リクエストを次のミドルウェアに引き渡して処理を継続できます。
SetNext()メソッドは、次の実行ミドルウェアを指定するために使用されます。次のミドルウェアが指定されていない場合、処理はアプリケーションに直接引き渡されます。
ミドルウェアはチェーン構造を介して接続されており、各ミドルウェアは次のミドルウェアのプロセス()メソッドを呼び出します。このチェーン構造により、リクエストは複数のミドルウェアで処理でき、それぞれがリクエストライフサイクルの異なる段階に介入します。
すべてのミドルウェアがリクエストを処理すると、最終アプリケーションコードが実行されます。通常、応答を生成し、クライアントに返す責任があります。
これは、リクエストにカスタムヘッダーを追加する単純なPHPミドルウェアの例です。
<span class="fun">クラスaddheadremiddlewareは、MiddlewareInterface {public function process(serverRequestInterface $ request、requesthandlerInterface $ handler){$ request = $ request-> withaddedheader( 'x-custom-header'、 'my value'); $ handler-> handle($ request)を戻るします。 }}</span>
上記のコードでは、 AddHeaderMiddlewareクラスはMiddlewareInterfaceインターフェイスを実装し、プロセス()メソッドのリクエストに「X-Custom-Header」という名前のカスタムヘッダーを追加します。次に、 $ Handler-> handle()を呼び出して、変更された要求を次のミドルウェアまたはアプリケーションに渡します。
PHPミドルウェアメカニズムは、開発者に柔軟な要求処理方法を提供します。 MiddlewareInterfaceインターフェイスを実装することにより、開発者はリクエストライフサイクルのさまざまな段階でカスタムロジックを簡単に挿入できます。ミドルウェアチェーンの設計により、複数のミドルウェアが順番にコラボレーションして、複雑な要求処理タスクを完全に完全に組み合わせることができます。