其实全局中间件就是分组中间件,只是它是在/
根分组上,所以任意路由都会执行全局中间件。
新建 app/middleware/Group.php
,内容如下
<?php
namespace app\middleware;
use core\Request;
use core\Response;
class Group {
public function handle(Request $request, Response $response, \Closure $next): void {
echo 'Group(路由分组) 中间件 call before<br>';
$num = mt_rand(0, 1);
if ($num == 0) {
$response->abort('请先登录');
return;
}
$next();
echo 'Group(路由分组) 中间件 call before<br>';
}
}
编辑route/user.php
,添加分组中间件
$router->namespace('app\api');
$router->middleware(\app\middleware\Group::class);
测试
浏览器访问http://phpapi.com/user/login
或者http://phpapi.com/user/logout
,这里随机模拟了登录判断
当登录成功时,会输出
All(全局) 中间件 call before
Group(路由分组) 中间件 call before
Group(路由分组) 中间件 call before
All(全局) 中间件 call after
from /user/login
当登录失败时,会输出
All(全局) 中间件 call before
Group(路由分组) 中间件 call before
All(全局) 中间件 call after
请先登录
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。