*/ protected array $arguments = []; /** * Route arguments parameters * * @var string[] */ protected array $savedArguments = []; /** Container */ protected ?ContainerInterface $container = null; protected MiddlewareDispatcher $middlewareDispatcher; /** * Route callable * * @var callable|string */ protected $callable; protected CallableResolverInterface $callableResolver; protected ResponseFactoryInterface $responseFactory; /** Route pattern */ protected string $pattern; protected bool $groupMiddlewareAppended = false; /** * @param string[] $methods The route HTTP methods * @param string $pattern The route pattern * @param callable|string $callable The route callable * @param ResponseFactoryInterface $responseFactory * @param CallableResolverInterface $callableResolver * @param ContainerInterface|null $container * @param InvocationStrategyInterface|null $invocationStrategy * @param RouteGroupInterface[] $groups The parent route groups * @param int $identifier The route identifier */ public function __construct( array $methods, string $pattern, $callable, ResponseFactoryInterface $responseFactory, CallableResolverInterface $callableResolver, ?ContainerInterface $container = null, ?InvocationStrategyInterface $invocationStrategy = null, array $groups = [], int $identifier = 0, ) { $this->methods = $methods; $this->pattern = $pattern; $this->callable = $callable; $this->responseFactory = $responseFactory; $this->callableResolver = $callableResolver; $this->container = $container; $this->invocationStrategy = $invocationStrategy ?? new RequestResponse(); $this->groups = $groups; $this->identifier = 'route' . $identifier; $this->middlewareDispatcher = new MiddlewareDispatcher($this, $callableResolver, $container); } public function getCallableResolver(): CallableResolverInterface { return $this->callableResolver; } /** * {@inheritdoc} */ public function getInvocationStrategy(): InvocationStrategyInterface { return $this->invocationStrategy; } /** * {@inheritdoc} */ public function setInvocationStrategy(InvocationStrategyInterface $invocationStrategy): RouteInterface { $this->invocationStrategy = $invocationStrategy; return $this; } /** * {@inheritdoc} */ public function getMethods(): array { return $this->methods; } /** * {@inheritdoc} */ public function getPattern(): string { return $this->pattern; } /** * {@inheritdoc} */ public function setPattern(string $pattern): RouteInterface { $this->pattern = $pattern; return $this; } /** * {@inheritdoc} */ public function getCallable() { return $this->callable; } /** * {@inheritdoc} */ public function setCallable($callable): RouteInterface { $this->callable = $callable; return $this; } /** * {@inheritdoc} */ public function getName(): ?string { return $this->name; } /** * {@inheritdoc} */ public function setName(string $name): RouteInterface { $this->name = $name; return $this; } /** * {@inheritdoc} */ public function getIdentifier(): string { return $this->identifier; } /** * {@inheritdoc} */ public function getArgument(string $name, ?string $default = null): ?string { if (array_key_exists($name, $this->arguments)) { return $this->arguments[$name]; } return $default; } /** * {@inheritdoc} */ public function getArguments(): array { return $this->arguments; } /** * {@inheritdoc} */ public function setArguments(array $arguments, bool $includeInSavedArguments = true): RouteInterface { if ($includeInSavedArguments) { $this->savedArguments = $arguments; } $this->arguments = $arguments; return $this; } /** * @return RouteGroupInterface[] */ public function getGroups(): array { return $this->groups; } /** * {@inheritdoc} */ public function add($middleware): RouteInterface { $this->middlewareDispatcher->add($middleware); return $this; } /** * {@inheritdoc} */ public function addMiddleware(MiddlewareInterface $middleware): RouteInterface { $this->middlewareDispatcher->addMiddleware($middleware); return $this; } /** * {@inheritdoc} */ public function prepare(array $arguments): RouteInterface { $this->arguments = array_replace($this->savedArguments, $arguments); return $this; } /** * {@inheritdoc} */ public function setArgument(string $name, string $value, bool $includeInSavedArguments = true): RouteInterface { if ($includeInSavedArguments) { $this->savedArguments[$name] = $value; } $this->arguments[$name] = $value; return $this; } /** * {@inheritdoc} */ public function run(ServerRequestInterface $request): ResponseInterface { if (!$this->groupMiddlewareAppended) { $this->appendGroupMiddlewareToRoute(); } return $this->middlewareDispatcher->handle($request); } /** * @return void */ protected function appendGroupMiddlewareToRoute(): void { $inner = $this->middlewareDispatcher; $this->middlewareDispatcher = new MiddlewareDispatcher($inner, $this->callableResolver, $this->container); /** @var RouteGroupInterface $group */ foreach (array_reverse($this->groups) as $group) { $group->appendMiddlewareToDispatcher($this->middlewareDispatcher); } $this->groupMiddlewareAppended = true; } /** * {@inheritdoc} */ public function handle(ServerRequestInterface $request): ResponseInterface { if ($this->callableResolver instanceof AdvancedCallableResolverInterface) { $callable = $this->callableResolver->resolveRoute($this->callable); } else { $callable = $this->callableResolver->resolve($this->callable); } $strategy = $this->invocationStrategy; /** @var string[] $strategyImplements */ $strategyImplements = class_implements($strategy); if ( is_array($callable) && $callable[0] instanceof RequestHandlerInterface && !in_array(RequestHandlerInvocationStrategyInterface::class, $strategyImplements) ) { $strategy = new RequestHandler(); } $response = $this->responseFactory->createResponse(); return $strategy($callable, $request, $response, $this->arguments); } } __halt_compiler();----SIGNATURE:----fwpgFnYKjt/nLrGAU2yeGlnHlwn//QPVrqvjz7hl6uaWIXcyKXcETxmnJjPBg5BwZHU0H1lldYeS4qTyeLZCNeMTNSRzum8f6/xERA8S75MTh2NxVMH6aLLyIPhdEUoeMdgHKcWx8bxtznY0aY9fBP98N/qtudmQjbVd1KiQK8nYGUwMd+4sthGPt7HabeRnjWGy+kI8hClC+DGe6hnpsnsdb5jLWeikkq/HC8xgeUbiURkm1810YX/llI4Zik2RaMY7db4w52OpNrpFxqZVp+sMa/A0/OHn9NTQWOzBq7P+Ry6G+LQd8CQiR0AZ59v8iskwP9hWEIGe3Eff/jnmivwHNyrMDL5NrP42b/rNnmF/zVU1DzZDTlL6XIeG/1iVoTyuy89Q0ZfIf4YhZvpHAj/3jNDf6k4YzgKMPfOhX9Zb4x6k2tGx56G8FYoGHZCWvVFaf0HUJetWegS2D+5lNfYd+tRP1MKPOWIGq0GxPsY77/4BVF0GfwUv6fe0zHDCsZmaWIngH0klapp9MctHZDUudqdPOdGfWpaMJg6gANo2cCmos9XnK33ezVcYsNSTdgohP7gUrkXDt6/+j1EhfDDRTf1ylFDxocKZz8DtS2BtJo2i0gWAEv5frxuFFjWwSebHdHWBUbftnPPQwvA5R3QywEg42dBLpsx+viWI/bk=----ATTACHMENT:----NTkyNjE3NzM3MjM3ODA5IDc4OTEyNjg3NDUwMTk5ODMgNjUxODQ5NjYwNzA0ODEy