定义
- 中间件主要用于拦截或过滤应用的HTTP请求,并进行必要的业务处理
如何定义中间件
可以通过命令行快速建立中间件
php think make:middleware Check
//会在app/middleware目录下生成一个check中间件
生成代码文件
开始调度
<?php
namespace app\middleware;
class Check
{
public function handle($request, \Closure $next)
{
if ($request->param('name') == 'think') {
return redirect('index/think');
}
return $next($request);
}
}
- 中间件入口执行方法必须是handle方法,且第一个参数是Request对象,第二个参数是一个闭包。
- 中间件 handle 方法的返回值必须是一个 Response 对象
结束调度
中间件支持定义请求结束前的回调机制,你只需要在中间件类中添加 end 方法。
public function end(\think\Response $response)
{
// 回调行为
}
前置/后置中间件
中间件是在请求具体的操作之前还是之后执行,完全取决于中间件的定义本身.
前置中间件
<?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 $