Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. RouteCompiler.php

function RouteCompiler::compile

Same name in this branch
  1. 11.1.x core/lib/Drupal/Core/Routing/RouteCompiler.php \Drupal\Core\Routing\RouteCompiler::compile()

Throws

\InvalidArgumentException if a path variable is named _fragment

\LogicException if a variable is referenced more than once

\DomainException if a variable name starts with a digit or if it is too long to be successfully used as a PCRE subpattern

Overrides RouteCompilerInterface::compile

2 calls to RouteCompiler::compile()
RouteCompiler::compile in core/lib/Drupal/Core/Routing/RouteCompiler.php
Compiles the current route instance.
RouteCompiler::compile in core/lib/Drupal/Core/Routing/RouteCompiler.php
Compiles the current route instance.
1 method overrides RouteCompiler::compile()
RouteCompiler::compile in core/lib/Drupal/Core/Routing/RouteCompiler.php
Compiles the current route instance.

File

vendor/symfony/routing/RouteCompiler.php, line 43

Class

RouteCompiler
RouteCompiler compiles Route instances to CompiledRoute instances.

Namespace

Symfony\Component\Routing

Code

public static function compile(Route $route) : CompiledRoute {
    $hostVariables = [];
    $variables = [];
    $hostRegex = null;
    $hostTokens = [];
    if ('' !== ($host = $route->getHost())) {
        $result = self::compilePattern($route, $host, true);
        $hostVariables = $result['variables'];
        $variables = $hostVariables;
        $hostTokens = $result['tokens'];
        $hostRegex = $result['regex'];
    }
    $locale = $route->getDefault('_locale');
    if (null !== $locale && null !== $route->getDefault('_canonical_route') && preg_quote($locale) === $route->getRequirement('_locale')) {
        $requirements = $route->getRequirements();
        unset($requirements['_locale']);
        $route->setRequirements($requirements);
        $route->setPath(str_replace('{_locale}', $locale, $route->getPath()));
    }
    $path = $route->getPath();
    $result = self::compilePattern($route, $path, false);
    $staticPrefix = $result['staticPrefix'];
    $pathVariables = $result['variables'];
    foreach ($pathVariables as $pathParam) {
        if ('_fragment' === $pathParam) {
            throw new \InvalidArgumentException(\sprintf('Route pattern "%s" cannot contain "_fragment" as a path parameter.', $route->getPath()));
        }
    }
    $variables = array_merge($variables, $pathVariables);
    $tokens = $result['tokens'];
    $regex = $result['regex'];
    return new CompiledRoute($staticPrefix, $regex, $tokens, $pathVariables, $hostRegex, $hostTokens, $hostVariables, array_unique($variables));
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal