前回の例では、ミドルウェアの定義を学び、ミドルウェアの意味を理解した後、マニュアルをめくってみると、「プレミドルウェア」と「ポストミドルウェア」という別のマニュアルが見つかりました。両者の違いは何ですか?
1. 定義の違い。
プレミドルウェアとポストミドルウェアの定義が異なることは、公式サイトのマニュアルを見れば容易にわかりますので、以下に見てみましょう。
ミドルウェア以前の定義:
<?php namespace app\middleware; class Before { public function handle($request, \Closure $next) { // 添加中间件执行代码 return $next($request); } }
ミドルウェア以降:
<?php namespace app\middleware; class After { public function handle($request, \Closure $next) { $response = $next($request); // 添加中间件执行代码 return $response; } }
詳しく見てみると、最終的には、この 2 つは実行コードと $next であることがわかりました。 ($request) 順序の問題、プレミドルウェアとポストミドルウェアの鍵となるのはこの順序です。
2. $request は異なります。
次のコードをプレミドルウェアとポストミドルウェアでそれぞれ出力できます。
halt($request);
慎重に比較したところ、プレミドルウェアのコントローラーとメソッドが同じであることがわかりました。ミドルウェアが空の場合、ポストミドルウェアはコントローラー名とメソッドを取得できます。したがって、現在アクセスされているコントローラーとメソッドを取得したい場合は、ポストミドルウェアを使用して解決する必要があります。
#3. ミドルウェアがログイン シナリオを傍受します。
まず、公式 Web サイトでミドルウェアの定義を見てみましょう:ミドルウェアは主に、アプリケーションの HTTP リクエストをインターセプトまたはフィルターし、実行するために使用されます。必要な事務処理を行います。公式 Web サイトの定義を見て、友人はログイン傍受にはミドルウェアを使用するのが本当に最善であると考えるかもしれません。しかし、プレミドルウェアを使用すべきでしょうか、それともポストミドルウェアを使用すべきでしょうか?
<?php namespace app\middleware; class After { public function handle($request, \Closure $next) { $response = $next($request); // 添加中间件执行代码 if(empty('session')){ echo '登录不合法'; //跳转到登录页面 } return $response; } }
public function index(){ echo '后台首页'; }
以上がThinkPHP6 のフロントエンドミドルウェアとバックエンドミドルウェアの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。