1、中间件
在runWithRequest中 先调用loadMiddleware 解析全局middleware.php
/**
* 加载全局中间件
*/
protected function loadMiddleware(): void
{
if (is_file($this->app->getBasePath() . 'middleware.php')) {
$this->app->middleware->import(include $this->app->getBasePath() . 'middleware.php');
}
}
单个中间件储存的结构/vendor/topthink/framework/src/think/Middleware.php
$middleware = [[$middleware, 'handle'], $params ?? []]
中间件queue储存的结构
queue['global'][] = $middleware
最终 在pipeline调用call_user_func([$middleware, 'handle'], $request, $next, …$params)