ThinkPHP6 には新しいミドルウェア機能があり、ミドルウェアは多くの種類に分かれていますが、初心者の多くは ThinkPHP6 のミドルウェアに苦労するので、以下に紹介します。
グローバル ミドルウェア:
ThinkPHP6 フレームワークをダウンロードすると、アプリ ディレクトリに middleware.php が作成されます。ディレクトリ内に定義されているものをグローバルミドルウェアと呼び、グローバルミドルウェアはすべてのアプリケーションに対して有効なミドルウェアです。
アプリケーション ミドルウェア:
言い換えると、middleware.php の別のコピーをコピーして、index などの application の下に配置するとします。アプリケーション、それはアプリケーションミドルウェアと呼ばれますか? 答えは正解です。
コントローラミドルウェア:
コントローラ内でミドルウェアが動作する場合、それをコントローラミドルウェアと呼びますか?
ルーティング ミドルウェア:
ルーティングでミドルウェアを定義することもできますか? たとえば、特定のリクエストのみが必要な場合、特定のミドルウェアと他のミドルウェアがミドルウェアを使用したくない場合は、ルーティング ミドルウェアがあります。
同じリクエストに対してすべての種類のミドルウェアが定義されている場合、実行順序はどうなりますか?
グローバル ミドルウェア ->アプリケーション ミドルウェア ->ルーティング ミドルウェア ->コントローラー ミドルウェア
次に例を見ていきます。
グローバルミドルウェア:
public function handle($request, \Closure $next) { echo 'app全局中间件'; return $next($request); }
アプリケーションミドルウェア:
public function handle($request, \Closure $next) { echo '应用中间件'; return $next($request); }
ルーティングミドルウェア:
Route::rule('hello','index/hello') ->middleware(\app\middleware\Auth::class);
コントローラミドルウェア:
コントローラー ミドルウェアを使用する前に、まずエイリアスを定義し、ルート ディレクトリの config\middleware.php でそのエイリアスを定義します。このエイリアスは、実際にはエイリアス識別子を追加するものです。エイリアスを定義すると、コントローラー ミドルウェアだけでなくルーティング ミドルウェアでも使用できます。
return [ 'alias' => [ 'auth1' => app\middleware\Auth1::class, ], ];
ここでエイリアス ミドルウェアを定義する場合、middleware.php で宣言する必要はありません。代わりに、コントロール内でエイリアス定義を使用します:
class Index { protected $middleware = ['auth1']; public function index() { return 'index'; } public function hello() { echo 'hello方法'; } }
現時点では、 hello メソッドにアクセスすると、出力結果は次のようになります:
app global middleware
application middleware
routing middleware
controller middleware
hello メソッド
上記は、ThinkPHP6 のさまざまなミドルウェアの紹介です。実際、さまざまなミドルウェアを理解するのは難しいことではありません。重要なことは、誰もが明確にする必要があるということです。彼らの間の実行順序について。
以上がThinkPHP6 のさまざまなミドルウェアについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。