add(function ($req, $res, $next) { $res = $res->withHeader('X-First', 'first'); return $next($req, $res); }) ->add(function ($req, $res, $next) { $res = $res->withHeader('X-Second', 'second'); return $next($req, $res); }) ->add(function ($req, $res, $next) { if ($req->hasHeader('X-pass')) { $res = $res->withHeader('X-pass', $req->getHeaderLine('X-pass')); } $res = $res->withHeader('X-Second', 'second'); return $next($req, $res); }); return $middleware; } /** * @param \Psr\Http\Message\ServerRequestInterface $request The request * @param \Psr\Http\Message\ResponseInterface $request The response * @param callable $next The next middleware * @return \Psr\Http\Message\ResponseInterface */ public function __invoke(ServerRequestInterface $req, ResponseInterface $res, $next) { return $res; } }