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

Breadcrumb

  1. Drupal Core 11.1.x

CompiledUrlGeneratorDumper.php

Namespace

Symfony\Component\Routing\Generator\Dumper

File

vendor/symfony/routing/Generator/Dumper/CompiledUrlGeneratorDumper.php

View source
<?php


/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace Symfony\Component\Routing\Generator\Dumper;

use Symfony\Component\Routing\Exception\RouteCircularReferenceException;
use Symfony\Component\Routing\Exception\RouteNotFoundException;
use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;

/**
 * CompiledUrlGeneratorDumper creates a PHP array to be used with CompiledUrlGenerator.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 * @author Tobias Schultze <http://tobion.de>
 * @author Nicolas Grekas <p@tchwork.com>
 */
class CompiledUrlGeneratorDumper extends GeneratorDumper {
    public function getCompiledRoutes() : array {
        $compiledRoutes = [];
        foreach ($this->getRoutes()
            ->all() as $name => $route) {
            $compiledRoute = $route->compile();
            $compiledRoutes[$name] = [
                $compiledRoute->getVariables(),
                $route->getDefaults(),
                $route->getRequirements(),
                $compiledRoute->getTokens(),
                $compiledRoute->getHostTokens(),
                $route->getSchemes(),
                [],
            ];
        }
        return $compiledRoutes;
    }
    public function getCompiledAliases() : array {
        $routes = $this->getRoutes();
        $compiledAliases = [];
        foreach ($routes->getAliases() as $name => $alias) {
            $deprecations = $alias->isDeprecated() ? [
                $alias->getDeprecation($name),
            ] : [];
            $currentId = $alias->getId();
            $visited = [];
            while (null !== ($alias = $routes->getAlias($currentId) ?? null)) {
                if (false !== ($searchKey = array_search($currentId, $visited))) {
                    $visited[] = $currentId;
                    throw new RouteCircularReferenceException($currentId, \array_slice($visited, $searchKey));
                }
                if ($alias->isDeprecated()) {
                    $deprecations[] = $deprecation = $alias->getDeprecation($currentId);
                    trigger_deprecation($deprecation['package'], $deprecation['version'], $deprecation['message']);
                }
                $visited[] = $currentId;
                $currentId = $alias->getId();
            }
            if (null === ($target = $routes->get($currentId))) {
                throw new RouteNotFoundException(\sprintf('Target route "%s" for alias "%s" does not exist.', $currentId, $name));
            }
            $compiledTarget = $target->compile();
            $compiledAliases[$name] = [
                $compiledTarget->getVariables(),
                $target->getDefaults(),
                $target->getRequirements(),
                $compiledTarget->getTokens(),
                $compiledTarget->getHostTokens(),
                $target->getSchemes(),
                $deprecations,
            ];
        }
        return $compiledAliases;
    }
    public function dump(array $options = []) : string {
        return <<<EOF
<?php

// This file has been auto-generated by the Symfony Routing Component.

return [{<span class="php-variable">$this</span>-&gt;<span class="php-function-or-constant function member-of-self">generateDeclaredRoutes</span>()}
];

EOF;
    }
    
    /**
     * Generates PHP code representing an array of defined routes
     * together with the routes properties (e.g. requirements).
     */
    private function generateDeclaredRoutes() : string {
        $routes = '';
        foreach ($this->getCompiledRoutes() as $name => $properties) {
            $routes .= \sprintf("\n    '%s' => %s,", $name, CompiledUrlMatcherDumper::export($properties));
        }
        foreach ($this->getCompiledAliases() as $alias => $properties) {
            $routes .= \sprintf("\n    '%s' => %s,", $alias, CompiledUrlMatcherDumper::export($properties));
        }
        return $routes;
    }

}

Classes

Title Deprecated Summary
CompiledUrlGeneratorDumper CompiledUrlGeneratorDumper creates a PHP array to be used with CompiledUrlGenerator.

API Navigation

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