add(function ($request, $handler) { return $handler->handle($request)->withHeader('X-First', 'first'); }) ->add(function ($request, $handler) { return $handler->handle($request)->withHeader('X-Second', 'second'); }) ->add(function ($request, $handler) { $response = $handler->handle($request); if ($request->hasHeader('X-pass')) { $response = $response->withHeader('X-pass', $request->getHeaderLine('X-pass')); } return $response->withHeader('X-Second', 'second'); }); return $middlewareQueue; } /** * @param \Psr\Http\Message\ServerRequestInterface $request The request */ public function handle(ServerRequestInterface $request): ResponseInterface { $res = new Response(['status' => 200]); return $res->withHeader('X-testing', 'source header'); } }