### 作用:
中间件可以在执行过程中自动运行的部件,
### 运用范围:
中间件主要对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、可以控制,在执行哪些方法时不执行中间件,也可指定在执行哪些方法时才执行中间件。只是注意参数:第一个参数明显是中间件的下标、第二个参数是当前控制器中的方法名。
### 应用中间件