tp6的中间键
php think make:middleware Test
1.通过php think 内置命令生成一个中间键,这个指令会 app/middleware目录下面生成一个Test中间件。
<?php declare (strict_types = 1); namespace app\middleware; class Test { /** * 处理请求 * * @param \think\Request $request * @param \Closure $next * @return Response */ public function handle($request, \Closure $next) { echo "I'm a Test middleware "; return $next($request); } }
1.中间件的入口执行方法必须是handle方法,而且第一个参数是Request对象,第二个参数是一个闭包。
2.中间件handle方法的返回值必须是一个Response对象。
// 中间件配置 return [ // 别名或分组 'alias' => [ 'test' => [\app\middleware\Test::class], ], // 优先级设置,此数组中的中间件会按照数组中的顺序优先执行 'priority' => [], ];
1.config/middleware.php配置文件中可以定义中间件别名,设置中间件运行顺序
<?php // 全局中间件定义文件 return [ // 全局请求缓存 // \think\middleware\CheckRequestCache::class, // 多语言加载 // \think\middleware\LoadLangPack::class, // Session初始化 // \think\middleware\SessionInit::class \app\middleware\Test::class, ];
1.app/middleware.php 文件中定义应用级别的中间件设置
protected $middleware = ["test"];
1.在控制器中,通过成员变量定义中间件,对当前控制器生效
Route::rule('hello/:name','hello')
->middleware([\app\middleware\Auth::class, \app\middleware\Check::class]);
思考
1.中间键的执行顺序是全局中间件->应用中间件->路由中间件->控制器中间件
2.配置文件中可以定义中间件的别名和设置执行顺序
3.多个中间键通过数组的方式注册,如果需要传参数也可以通过数组的方式
4.路由中间件是对应某个路由请求
5.如果在应用和控制器中都注册了中间件,中间件会处理多次

浙公网安备 33010602011771号