Skip to content

MiddlewareBase — 中间件基类

  • 文件位置: kernel/Foundation/Middleware/MiddlewareBase.php
  • 命名空间: kernel\Foundation\Middleware
  • 类型: 抽象类
  • 是否可继承: 是(必须继承并实现 handle()

所有类中间件的基类。构造时接收请求实例与控制器实例并保存为受保护属性,供子类在 handle() 中使用。

属性

属性类型默认可见性说明
$requestRequestprotected请求实例,由构造注入
$controllerController|AuthController|\Closure|nullprotected控制器实例;闭包路由时(无控制器)为 null,由构造注入

方法

__construct(Request $request, $controller = null) — 中间件基类构造函数

参数

参数类型默认说明
$requestRequest请求实例
$controllerController|AuthController|\Closure|nullnull控制器实例;闭包路由时为 null

返回值

  • 无。

子类实现约定

子类需实现 handle() 方法。由 Middleware::execute() 调用,接收中间件执行参数并以 $next 闭包作为最后一个参数;必须调用 return $next() 继续执行并返回其响应。

示例

php
use kernel\Foundation\Middleware\MiddlewareBase;
use kernel\Foundation\HTTP\Response;

class AuthMiddleware extends MiddlewareBase
{
    public function handle($next)
    {
        if (!$this->request->header('Authorization')) {
            return Response::error('未登录', 401);
        }
        return $next();
    }
}