nginxsonarrradarrplexorganizrdashboardapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmark
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							118 lines
						
					
					
						
							3.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							118 lines
						
					
					
						
							3.5 KiB
						
					
					
				
								<?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;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * PhpGeneratorDumper creates a PHP class able to generate URLs for a given set of routes.
							 | 
						|
								 *
							 | 
						|
								 * @author Fabien Potencier <fabien@symfony.com>
							 | 
						|
								 * @author Tobias Schultze <http://tobion.de>
							 | 
						|
								 */
							 | 
						|
								class PhpGeneratorDumper extends GeneratorDumper
							 | 
						|
								{
							 | 
						|
								    /**
							 | 
						|
								     * Dumps a set of routes to a PHP class.
							 | 
						|
								     *
							 | 
						|
								     * Available options:
							 | 
						|
								     *
							 | 
						|
								     *  * class:      The class name
							 | 
						|
								     *  * base_class: The base class name
							 | 
						|
								     *
							 | 
						|
								     * @param array $options An array of options
							 | 
						|
								     *
							 | 
						|
								     * @return string A PHP class representing the generator class
							 | 
						|
								     */
							 | 
						|
								    public function dump(array $options = array())
							 | 
						|
								    {
							 | 
						|
								        $options = array_merge(array(
							 | 
						|
								            'class' => 'ProjectUrlGenerator',
							 | 
						|
								            'base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator',
							 | 
						|
								        ), $options);
							 | 
						|
								
							 | 
						|
								        return <<<EOF
							 | 
						|
								<?php
							 | 
						|
								
							 | 
						|
								use Symfony\Component\Routing\RequestContext;
							 | 
						|
								use Symfony\Component\Routing\Exception\RouteNotFoundException;
							 | 
						|
								use Psr\Log\LoggerInterface;
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * This class has been auto-generated
							 | 
						|
								 * by the Symfony Routing Component.
							 | 
						|
								 */
							 | 
						|
								class {$options['class']} extends {$options['base_class']}
							 | 
						|
								{
							 | 
						|
								    private static \$declaredRoutes;
							 | 
						|
								
							 | 
						|
								    public function __construct(RequestContext \$context, LoggerInterface \$logger = null)
							 | 
						|
								    {
							 | 
						|
								        \$this->context = \$context;
							 | 
						|
								        \$this->logger = \$logger;
							 | 
						|
								        if (null === self::\$declaredRoutes) {
							 | 
						|
								            self::\$declaredRoutes = {$this->generateDeclaredRoutes()};
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								{$this->generateGenerateMethod()}
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								EOF;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Generates PHP code representing an array of defined routes
							 | 
						|
								     * together with the routes properties (e.g. requirements).
							 | 
						|
								     *
							 | 
						|
								     * @return string PHP code
							 | 
						|
								     */
							 | 
						|
								    private function generateDeclaredRoutes()
							 | 
						|
								    {
							 | 
						|
								        $routes = "array(\n";
							 | 
						|
								        foreach ($this->getRoutes()->all() as $name => $route) {
							 | 
						|
								            $compiledRoute = $route->compile();
							 | 
						|
								
							 | 
						|
								            $properties = array();
							 | 
						|
								            $properties[] = $compiledRoute->getVariables();
							 | 
						|
								            $properties[] = $route->getDefaults();
							 | 
						|
								            $properties[] = $route->getRequirements();
							 | 
						|
								            $properties[] = $compiledRoute->getTokens();
							 | 
						|
								            $properties[] = $compiledRoute->getHostTokens();
							 | 
						|
								            $properties[] = $route->getSchemes();
							 | 
						|
								
							 | 
						|
								            $routes .= sprintf("        '%s' => %s,\n", $name, str_replace("\n", '', var_export($properties, true)));
							 | 
						|
								        }
							 | 
						|
								        $routes .= '    )';
							 | 
						|
								
							 | 
						|
								        return $routes;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Generates PHP code representing the `generate` method that implements the UrlGeneratorInterface.
							 | 
						|
								     *
							 | 
						|
								     * @return string PHP code
							 | 
						|
								     */
							 | 
						|
								    private function generateGenerateMethod()
							 | 
						|
								    {
							 | 
						|
								        return <<<'EOF'
							 | 
						|
								    public function generate($name, $parameters = array(), $referenceType = self::ABSOLUTE_PATH)
							 | 
						|
								    {
							 | 
						|
								        if (!isset(self::$declaredRoutes[$name])) {
							 | 
						|
								            throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', $name));
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        list($variables, $defaults, $requirements, $tokens, $hostTokens, $requiredSchemes) = self::$declaredRoutes[$name];
							 | 
						|
								
							 | 
						|
								        return $this->doGenerate($variables, $defaults, $requirements, $tokens, $parameters, $name, $referenceType, $hostTokens, $requiredSchemes);
							 | 
						|
								    }
							 | 
						|
								EOF;
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |