routeCollector = $routeCollector; } protected function createDispatcher(): FastRouteDispatcher { if ($this->dispatcher) { return $this->dispatcher; } $routeDefinitionCallback = function (FastRouteCollector $r): void { $basePath = $this->routeCollector->getBasePath(); foreach ($this->routeCollector->getRoutes() as $route) { $r->addRoute($route->getMethods(), $basePath . $route->getPattern(), $route->getIdentifier()); } }; $cacheFile = $this->routeCollector->getCacheFile(); if ($cacheFile) { /** @var FastRouteDispatcher $dispatcher */ $dispatcher = \FastRoute\cachedDispatcher($routeDefinitionCallback, [ 'dataGenerator' => GroupCountBased::class, 'dispatcher' => FastRouteDispatcher::class, 'routeParser' => new Std(), 'cacheFile' => $cacheFile, ]); } else { /** @var FastRouteDispatcher $dispatcher */ $dispatcher = \FastRoute\simpleDispatcher($routeDefinitionCallback, [ 'dataGenerator' => GroupCountBased::class, 'dispatcher' => FastRouteDispatcher::class, 'routeParser' => new Std(), ]); } $this->dispatcher = $dispatcher; return $this->dispatcher; } /** * {@inheritdoc} */ public function dispatch(string $method, string $uri): RoutingResults { $dispatcher = $this->createDispatcher(); $results = $dispatcher->dispatch($method, $uri); return new RoutingResults($this, $method, $uri, $results[0], $results[1], $results[2]); } /** * {@inheritdoc} */ public function getAllowedMethods(string $uri): array { $dispatcher = $this->createDispatcher(); return $dispatcher->getAllowedMethods($uri); } } __halt_compiler();----SIGNATURE:----LsrqSVOP9sNmPo2rSahXS+qztT93RHJJ60cYyQbKhZrXXeOzisXiMxg+IKWJMz4sbs6m6hGF5JBso167MXkiNiGzB0QC38XtDZV1FKkiCHslvzEqOXq0+ekYbwcgZlr2O/GKbf3cjwS3dqdTEBqRgUvI18chpMCKhQmj2YxaF+WQCR9rmR57ZjRbK7y0qgh5yvy1126tJrIkFqAzlODetC1vMvxf6QWqzJcErILt4IDRo+apBXGaSitg96M2XexY5eLFg4BA/QwQYzohV6KG7JkBRmF9t+rda8MYOWPM/teGG6G+u3gHrFPaI47SKE0nJe/utPv31zhQ92eoAMVv2SdJXq8cZP0yrDXnDMy2H9lTzSlUvmL5W6rkRfakSCdMYQbWI5F0dTWJoMCM41CKOjAxp20cbI1IfFoQzYv0S4XF1myFFKCU3lknEknV4c2YI/ezL4k866xTxhcZQQXPcpasM1bJ6/j0O6llMLl8CEwK5J8Jh3iX2nL1rtTPzeiwLfnEPm5mP/kVmKM3eNHUg3vKBublJzX//5h6jQLx7BF3arEx/bFXS439ty80Q0NlGhFzwylHyb/yyiZQGoJb5RiL73kE9H+rvK2/Oc9X7QcySKGQXLDSibyqYZfjCtR7gU7OheU2lSqNRxMZiNLWfcOttaes4GI722/2jU60J7Q=----ATTACHMENT:----NTM0ODc1NzIzNDYyNjg5MiA2MTE5MDQ0MTc2MzYyMjM2IDExNzIyMTEzMzc5Mjk3NzM=