> */ private array $middleware = []; public function __construct( private readonly ContainerInterface $container, private readonly RequestHandlerInterface $fallbackHandler, ) { } /** @param class-string $middleware */ public function add(string $middleware): void { $this->middleware[] = $middleware; } public function handle(ServerRequestInterface $request): ResponseInterface { if ($this->middleware === []) { return $this->fallbackHandler->handle($request); } $middleware = $this->container->get(array_shift($this->middleware)); return $middleware->process($request, $this); } }