middlewares = array_values($this->middlewares); } protected function handleRequest($request) { if (! isset($this->middlewares[$this->offset])) { $handler = $this->coreHandler; } else { $handler = $this->middlewares[$this->offset]; is_string($handler) && $handler = $this->container->get($handler); } if (! $handler || ! method_exists($handler, 'process')) { throw new InvalidArgumentException('Invalid middleware, it has to provide a process() method.'); } return $handler->process($request, $this->next()); } protected function next(): self { ++$this->offset; return $this; } }