Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Routing/CompiledRoute.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Routing/CompiledRoute.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,170 @@ +<?php + +namespace Drupal\Core\Routing; + +use Drupal\Component\Utility\Unicode; +use Symfony\Component\Routing\CompiledRoute as SymfonyCompiledRoute; + +/** + * A compiled route contains derived information from a route object. + */ +class CompiledRoute extends SymfonyCompiledRoute { + + /** + * The fitness of this route. + * + * @var int + */ + protected $fit; + + /** + * The pattern outline of this route. + * + * @var string + */ + protected $patternOutline; + + /** + * The number of parts in the path of this route. + * + * @var int + */ + protected $numParts; + + /** + * Constructs a new compiled route object. + * + * This is a ridiculously long set of constructor parameters, but as this + * object is little more than a collection of values it's not a serious + * problem. The parent Symfony class does the same, as well, making it + * difficult to override differently. + * + * @param int $fit + * The fitness of the route. + * @param string $pattern_outline + * The pattern outline for this route. + * @param int $num_parts + * The number of parts in the path. + * @param string $staticPrefix + * The static prefix of the compiled route + * @param string $regex + * The regular expression to use to match this route + * @param array $tokens + * An array of tokens to use to generate URL for this route + * @param array $pathVariables + * An array of path variables + * @param string|null $hostRegex + * Host regex + * @param array $hostTokens + * Host tokens + * @param array $hostVariables + * An array of host variables + * @param array $variables + * An array of variables (variables defined in the path and in the host patterns) + */ + public function __construct($fit, $pattern_outline, $num_parts, $staticPrefix, $regex, array $tokens, array $pathVariables, $hostRegex = NULL, array $hostTokens = [], array $hostVariables = [], array $variables = []) { + parent::__construct($staticPrefix, $regex, $tokens, $pathVariables, $hostRegex, $hostTokens, $hostVariables, $variables); + + $this->fit = $fit; + // Support case-insensitive route matching by ensuring the pattern outline + // is lowercase. + // @see \Drupal\Core\Routing\RouteProvider::getRoutesByPath() + $this->patternOutline = Unicode::strtolower($pattern_outline); + $this->numParts = $num_parts; + } + + /** + * Returns the fit of this route. + * + * See RouteCompiler for a definition of how the fit is calculated. + * + * @return int + * The fit of the route. + */ + public function getFit() { + return $this->fit; + } + + /** + * Returns the number of parts in this route's path. + * + * The string "foo/bar/baz" has 3 parts, regardless of how many of them are + * placeholders. + * + * @return int + * The number of parts in the path. + */ + public function getNumParts() { + return $this->numParts; + } + + /** + * Returns the pattern outline of this route. + * + * The pattern outline of a route is the path pattern of the route, but + * normalized such that all placeholders are replaced with %. + * + * @return string + * The normalized path pattern. + */ + public function getPatternOutline() { + return $this->patternOutline; + } + + /** + * Returns the options. + * + * @return array + * The options. + */ + public function getOptions() { + return $this->route->getOptions(); + } + + /** + * Returns the defaults. + * + * @return array + * The defaults. + */ + public function getDefaults() { + return $this->route->getDefaults(); + } + + /** + * Returns the requirements. + * + * @return array + * The requirements. + */ + public function getRequirements() { + return $this->route->getRequirements(); + } + + /** + * {@inheritdoc} + */ + public function serialize() { + // Calling the parent method is safer than trying to optimize out the extra + // function calls. + $data = unserialize(parent::serialize()); + $data['fit'] = $this->fit; + $data['patternOutline'] = $this->patternOutline; + $data['numParts'] = $this->numParts; + + return serialize($data); + } + + /** + * {@inheritdoc} + */ + public function unserialize($serialized) { + parent::unserialize($serialized); + $data = unserialize($serialized); + + $this->fit = $data['fit']; + $this->patternOutline = $data['patternOutline']; + $this->numParts = $data['numParts']; + } + +}