私は 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 のみですか、それともこのフレームワークの他のソリューションですか?