PSR-15 中,Middleware 的设计是不是有问题啊?

按照PSR-15的文档,多个Middleware需要组合使用,得这样:

class QueueRequestHandler implements RequestHandlerInterface
{
    private $middleware = [];
    private $fallbackHandler;

    public function __construct(RequestHandlerInterface $fallbackHandler)
    {
        $this->fallbackHandler = $fallbackHandler;
    }

    public function add(MiddlewareInterface $middleware)
    {
        $this->middleware[] = $middleware;
    }

    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        // Last middleware in the queue has called on the request handler.
        if (0 === count($this->middleware)) {
            return $this->fallbackHandler->handle($request);
        }

        $middleware = array_shift($this->middleware);
        return $middleware->process($request, $this);
    }
}

按照这个设计,每个请求都得重新来一个QueueRequestHandler?因为$this->middleware在请求处理完成后,就变成空的了。

在fpm环境中,每个请求重新来一个QueueRequestHandler是合适的,而且也是必须的。
但是在swoole环境中、在cli监听端口环境中,每个请求都重新建立一个QueueRequestHandler,即没有必要,而且也很昂贵。这种框架基础层的东西,是不是应该和request的生命周期独立?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!