* * @internal */ final class MiddlewareRequestHandler implements RequestHandlerInterface { private int $index = 0; /** * @param list $middleware */ public function __construct( private readonly array $middleware, private readonly \Closure $application, ) { } public function handle(ServerRequestInterface $request): ResponseInterface { if (!isset($this->middleware[$this->index])) { return ($this->application)($request); } return $this->middleware[$this->index++]->process($request, $this); } }