PHP:PSR-15出站中间件,通过中间件修改响应?

PHP:PSR-15出站中间件,通过中间件修改响应?,php,middleware,Php,Middleware,对于一个新项目,我想使用中间件处理传入的请求,然后处理传出的响应 在坚持PSR-15的同时,我对如何实现这一点感到困惑和失落。 我发现的每个描述都将应用程序显示为“”,其中中间件充当请求和响应通过的层。() 请求-->中间件-->处理程序-->中间件-->响应 但是当前的valid需要一个RequestInterface并返回一个ResponseInterface。因此,对我来说,“洋葱”似乎被切成两半: 请求-->中间件-->处理程序-->响应 问题是: 如果MiddlewareInterfa

对于一个新项目,我想使用中间件处理传入的请求,然后处理传出的响应

在坚持PSR-15的同时,我对如何实现这一点感到困惑和失落。 我发现的每个描述都将应用程序显示为“”,其中中间件充当请求和响应通过的层。()

请求-->中间件-->处理程序-->中间件-->响应

但是当前的valid需要一个RequestInterface并返回一个ResponseInterface。因此,对我来说,“洋葱”似乎被切成两半:

请求-->中间件-->处理程序-->响应

问题是: 如果MiddlewareInterface需要请求,如何通过(中间件?)堆栈推送和修改响应

我拼凑了一个简短的例子来展示我正在努力实现的目标。 以下是应用程序的“核心”:

//bootstrap/app.php
$request=Factory::createRequest();
//简单路线。。。只是为了考试
$router=新路由器([
“/”=>[CampaignController::类,“显示”],
//…路线定义。。。
]);
//将传入请求与处理程序匹配
$handler=$router->match($request);
//入站中间件,这些是PSR-15
$inbound_Middleware=[
新Alpha,//例如检查CSRF等。。。
新的好极了,
新查理,
];
//通过入站中间件堆栈将请求分派给处理程序
$handler\u response=Stack::pipe($request)->to($handler)->through($inbound\u middleware);
//出站中间件,这些不是符合PSR-15的。。。
$outbound_Middleware=[
新增量,//例如缩小HTML等。。。
新狐步舞,
新高尔夫,
];
//通过出站中间件堆栈传递处理程序响应
$server\u response=Stack::pipe($handler\u response)->通过($outbound\u middleware);
//将生成的响应发送回客户端
$emitter=Factory::createResponseEmitter();
$emitter->emit($server\u响应);
我查看了Laravel的代码和其他解决方案,但没有找到它们是如何工作的,也没有修改响应

也许我的想法完全不对劲,或者我还没有完全理解这个概念。。。 通常我和拉威尔一起工作,所以这些“低级”概念对我来说是新概念

编辑: 澄清:我的测试应用程序可以工作,但我想知道它是否是“正确”的方法