CakePHP は、開発者が信頼性の高い Web アプリケーションを迅速に構築できるように、多くの強力な機能とツールを提供する人気の PHP 開発フレームワークです。その 1 つは、アプリケーションのルーティングと URL 管理を最適化するミドルウェアです。この記事では、CakePHP ミドルウェアの基本概念、使用法、コード例を紹介します。
ミドルウェアは、リクエストとレスポンスの間に実行される一連の操作です。リクエストの変更、ミドルウェアの処理、アプリケーション ロジックの実行、応答の処理を行うことができます。 CakePHP では、ルーティングや URL 管理などのリクエスト関連のタスクを処理するためにミドルウェアが使用されます。ミドルウェアを使用すると、アプリケーションのルーティング メカニズムを簡単に変更および制御し、カスタマイズされた URL 管理を実装できます。
まず、アプリケーションの構成ファイル (config/app.php) でミドルウェアを有効にする必要があります。 Application
クラスの middleware
属性を見つけて、それに RoutingMiddleware
を追加します。
'Application' => [ 'middleware' => [ // ... CakeRoutingMiddlewareRoutingMiddleware::class, // ... ], ],
次に、独自のミドルウェアを定義して使用できます。ミドルウェア クラスは、PsrHttpServerMiddlewareInterface
インターフェイスを実装し、process
メソッドを実装する必要があります。このメソッドは、ServerRequest
オブジェクトとクロージャ関数 (リクエストの処理を続行するために使用できます) を受け取ります。単純なミドルウェアの例を次に示します。
use CakeHttpResponse; use PsrHttpMessageResponseInterface; use PsrHttpMessageServerRequestInterface; use PsrHttpServerMiddlewareInterface; use PsrHttpServerRequestHandlerInterface; class CustomMiddleware implements MiddlewareInterface { public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { // 在请求之前执行操作 // ... $response = $handler->handle($request); // 在响应之后执行操作 // ... return $response; } }
上記の例では、CustomMiddleware
ミドルウェアはいくつかの操作を実行し、$handler->handle($ request)##を使用します。 #リクエストの処理を続行します。このようにして、リクエストの前とレスポンスの後に任意のアクションを実行できます。
Application クラスの
middlewareQueue 属性を見つけて、独自のミドルウェアを追加します。
'Application' => [ // ... 'middlewareQueue' => [ // ... AppMiddlewareCustomMiddleware::class, // ... ], ],
middlewareQueue で実行される順序に基づきます。したがって、特定のミドルウェアが別のミドルウェアよりも前に実行されるようにする必要がある場合は、その位置を調整するだけで済みます。
class RedirectMiddleware implements MiddlewareInterface { public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { $uri = $request->getUri(); // 检查请求的URL是否需要重定向 if ($uri->getPath() === '/old-url') { $newUri = $uri->withPath('/new-url'); $response = new Response(); return $response->withHeader('Location', $newUri); } return $handler->handle($request); } }
RedirectMiddlewareミドルウェアは、要求された URL が古い URL かどうかを確認し、古い URL である場合は、新しい URL を作成します。 URL を返し、対応するリダイレクト応答を返します。
以上がCakePHP ミドルウェア: アプリケーションのルーティングと URL 管理を最適化します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。