TP6 源码阅读笔记

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)

点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注