ホームページ >PHPフレームワーク >ThinkPHP >ThinkPHP6のミドルウェアを理解する
最新の Web アプリケーションの複雑さが増すにつれて、コード ロジックもますます複雑になってきています。この問題を解決するために、最新の Web 開発ではミドルウェアがますます普及しています。 ThinkPHP6 は、ミドルウェアもサポートする人気の PHP フレームワークです。この記事では、ThinkPHP6 ミドルウェアの基本と実際の使用方法について説明します。
Web 開発において、ミドルウェアとは HTTP リクエストとレスポンスを処理する方法を指します。クライアントがサーバーにリクエストを送信すると、HTTP リクエストは複数のミドルウェアを通過し、最終的にクライアントにレスポンスを返します。
ミドルウェアは、リクエストがターゲットのコントローラーまたはアクションに到達する前にリクエストを操作できます。また、応答がターゲットのコントローラーまたはアクションを離れる前に応答を操作することもできます。このアプローチにより、アプリケーション ロジックを変更せずに機能を追加できます。
ThinkPHP6 では、ミドルウェアをグローバルに、または必要に応じて使用できます。すべてのミドルウェアは app/middleware ディレクトリに保存されます。
ミドルウェアの基本構造:
<?php declare (strict_types=1); namespace appmiddleware; use thinkRequest; use thinkResponse; class SampleMiddleware { public function handle(Request $request, Closure $next): Response { // do something before the controller action $response = $next($request); // do something after the controller action return $response; } }
このコードは、handle メソッドが必要な最も単純なミドルウェアを示しています。 Request オブジェクトとクロージャ $next を受け取ります。クロージャ内で、次のミドルウェア、ターゲット コントローラ、またはアクション メソッドが呼び出され、最後に応答が返されます。 $next 呼び出しの前後に独自のロジックを追加できます。
構成ミドルウェア:
// 全局中间件 return [ // 使用定义的中间件类名称或闭包 ppmiddlewareSampleMiddleware::class, ];
// 路由中间件 return [ // 定义中间件名称和对应中间件类名称或闭包 'auth' => ppmiddlewareAuth::class, // 为指定路由添加中间件 'admin' => ['auth', 'log'], ];
以下では、簡単な例を使用して、ThinkPHP6 でミドルウェアを使用する方法を説明します。
各ルートの応答時間を記録する必要がある Web アプリケーションを開発しているとします。この機能を Web フレームワークに追加するには、すべてのコントローラー メソッドにコードを追加する必要があります。ミドルウェアを使用すると、このコードをコントローラー メソッドから抽出し、コードを簡素化し、保守性を向上させることができます。
<?php declare (strict_types=1); namespace appmiddleware; use thinkRequest; use thinkResponse; class CustomMiddleware { public function handle(Request $request, Closure $next): Response { $startTime = microtime(true); $response = $next($request); $endTime = microtime(true); $response->header('X-Response-Time', $endTime - $startTime); return $response; } }
このミドルウェアは、各リクエストの開始時刻と終了時刻を記録し、応答時間を応答ヘッダーに追加します。
app/middleware.php ファイルで、CustomMiddleware をグローバル ミドルウェアまたはルーティング ミドルウェアに追加します。
// 全局中间件 return [ ppmiddlewareCustomMiddleware::class, ];
または、ルート定義で指定されたルートのミドルウェアを追加します。
use appmiddlewareCustomMiddleware; Route::get('hello/:name', 'index/hello')->middleware(CustomMiddleware::class);
これで、アプリケーションに新しいミドルウェアが正常に追加されました。リクエストが行われるたびに、CustomMiddleware はリクエスト時間と応答時間をキャプチャし、応答時間を応答ヘッダーに追加します。
ミドルウェアは、コードをより小さく、より焦点を絞ったコンポーネントに分割するのに役立つ、Web 開発において非常に便利なツールです。 ThinkPHP6 では、ミドルウェアはコードを簡素化し、保守性を向上させるのに役立つ強力な機能です。この記事が、ThinkPHP6 ミドルウェアの考え方とその実践的な応用方法を理解するのに役立つことを願っています。
以上がThinkPHP6のミドルウェアを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。