我使用zend-expressive,我想将数据从一个中间件传递到另一个中间件。例如在 config/routes.php 我有
[
'name' => 'v1.item.list',
'path' => '/item',
'allowed_methods' => ['GET'],
'middleware' => [
Api\V1\Action\ItemListAction::class,
Application\Middleware\JsonRenderMiddleware::class
]
],
在 Api\V1\Action\ItemListAction 我正在准备来自数据库的一些数据,我喜欢将 $itemsList 传递给另一个中间件
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next = null)
{
$parameters = new ListParameters($request->getQueryParams());
$itemsList = $this->commandBus->handle(new ItemListCommand($parameters));
return $next($request, $response);
}
在 Application\Middleware\JsonRenderMiddleware 我想获取 $itemsList 并以 json 格式返回:
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next = null)
{
return new JsonResponse($itemsList);
}
最好的方法是怎样的?只有 commandBus 还是这个框架中的其他解决方案?