头图
其实全局中间件就是分组中间件,只是它是在/根分组上,所以任意路由都会执行全局中间件。

新建 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
请先登录

mirahs
1 声望0 粉丝