Chris@0: provider = $provider; Chris@0: $this->logger = $logger; Chris@0: $this->context = new RequestContext(); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH) Chris@0: { Chris@0: if ($name instanceof SymfonyRoute) { Chris@0: $route = $name; Chris@0: } elseif (null === $route = $this->provider->getRouteByName($name)) { Chris@0: throw new RouteNotFoundException(sprintf('Route "%s" does not exist.', $name)); Chris@0: } Chris@0: Chris@0: // the Route has a cache of its own and is not recompiled as long as it does not get modified Chris@0: $compiledRoute = $route->compile(); Chris@0: $hostTokens = $compiledRoute->getHostTokens(); Chris@0: Chris@0: $debug_message = $this->getRouteDebugMessage($name); Chris@0: Chris@0: return $this->doGenerate($compiledRoute->getVariables(), $route->getDefaults(), $route->getRequirements(), $compiledRoute->getTokens(), $parameters, $debug_message, $referenceType, $hostTokens); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Support a route object and any string as route name. Chris@0: * Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function supports($name) Chris@0: { Chris@0: return is_string($name) || $name instanceof SymfonyRoute; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getRouteDebugMessage($name, array $parameters = array()) Chris@0: { Chris@0: if (is_scalar($name)) { Chris@0: return $name; Chris@0: } Chris@0: Chris@0: if (is_array($name)) { Chris@0: return serialize($name); Chris@0: } Chris@0: Chris@0: if ($name instanceof RouteObjectInterface) { Chris@0: return 'Route with key '.$name->getRouteKey(); Chris@0: } Chris@0: Chris@0: if ($name instanceof SymfonyRoute) { Chris@0: return 'Route with path '.$name->getPath(); Chris@0: } Chris@0: Chris@0: return get_class($name); Chris@0: } Chris@0: }