### 作用:
中間件可以在執行過程中自動運行的部件,
### 運用范圍:
中間件主要對http請求進行攔截處理。比如,我們可以在執行控制器方法時自動使用“中間件”完成用戶登錄驗證操作。
在執行控制器方法之前要執行的一些公共的操作,可以使用中間件,如果只是某一個需要可以直接在方法內完成。
### 基本說明:
中間件類似于自定義標簽
1、創建中間件
2、注冊中間件
### 創建中間件
保存于: system/middleware 目錄中
<?php namespace system\middleware;
class Auth
{
//執行中間件
public function run ()
{
echo "我執行了";
}
}
### 注冊中間件
1、配置文件:system/config/middleware.php
2、配置種類:全局中間件、控制器中間件、應用中間件
### 全局中間件
將中間件的命名空間寫入到全局中間件中。在任意地方可自動調用。
'global'=>['system\middleware\App']
App是中間件的類名
### 控制器中間件
將中間件的命名空間寫入到控制器中間件中。
'auth'=>'system\middleware\Test'
注意 :
1、控制器中注冊中間件時,要加一個下標:'auth'=>'' 即控制器中間件中的值是二維數組!
在控制器的 __construct 方法或之前執行以下代碼都可觸發控制器中間件運行。
Middleware::set('auth');
注意:
1、控制器中間件,是整個控制器的中間件,不是其中任意一個方法的中間件。所以只能是在構造方法中,或者是在構造方法之前才能執行!
2、構造方法之前不太清楚,但至少要放在構造方法中,在實例化對象時被執行!
只允許指定方法運行中間件
Middleware::set('auth', ['only' => ['test']]);
除了某個方法外其他方法執行中間件
Middleware::set('auth', ['except' => ['test']]);
3、可以控制,在執行哪些方法時不執行中間件,也可指定在執行哪些方法時才執行中間件。只是注意參數:第一個參數明顯是中間件的下標、第二個參數是當前控制器中的方法名。
### 應用中間件