Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

PhpGeneratorDumper.php

Zuletzt modifiziert: 09.10.2024, 12:59 - Dateigröße: 3.43 KiB


001  <?php
002   
003  /*
004   * This file is part of the Symfony package.
005   *
006   * (c) Fabien Potencier <fabien@symfony.com>
007   *
008   * For the full copyright and license information, please view the LICENSE
009   * file that was distributed with this source code.
010   */
011   
012  namespace Symfony\Component\Routing\Generator\Dumper;
013   
014  /**
015   * PhpGeneratorDumper creates a PHP class able to generate URLs for a given set of routes.
016   *
017   * @author Fabien Potencier <fabien@symfony.com>
018   * @author Tobias Schultze <http://tobion.de>
019   *
020   * @api
021   */
022  class PhpGeneratorDumper extends GeneratorDumper
023  {
024      /**
025       * Dumps a set of routes to a PHP class.
026       *
027       * Available options:
028       *
029       *  * class:      The class name
030       *  * base_class: The base class name
031       *
032       * @param array $options An array of options
033       *
034       * @return string A PHP class representing the generator class
035       *
036       * @api
037       */
038      public function dump(array $options = array())
039      {
040          $options = array_merge(array(
041              'class'      => 'ProjectUrlGenerator',
042              'base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator',
043          ), $options);
044   
045          return <<<EOF
046  <?php
047   
048  use Symfony\Component\Routing\RequestContext;
049  use Symfony\Component\Routing\Exception\RouteNotFoundException;
050  use Psr\Log\LoggerInterface;
051   
052  /**
053   * {$options['class']}
054   *
055   * This class has been auto-generated
056   * by the Symfony Routing Component.
057   */
058  class {$options['class']} extends {$options['base_class']}
059  {
060      private static \$declaredRoutes = {$this->generateDeclaredRoutes()};
061   
062      /**
063       * Constructor.
064       */
065      public function __construct(RequestContext \$context, LoggerInterface \$logger = null)
066      {
067          \$this->context = \$context;
068          \$this->logger = \$logger;
069      }
070   
071  {$this->generateGenerateMethod()}
072  }
073   
074  EOF;
075   
076      }
077   
078      /**
079       * Generates PHP code representing an array of defined routes
080       * together with the routes properties (e.g. requirements).
081       *
082       * @return string PHP code
083       */
084      private function generateDeclaredRoutes()
085      {
086          $routes = "array(\n";
087          foreach ($this->getRoutes()->all() as $name => $route) {
088              $compiledRoute = $route->compile();
089   
090              $properties = array();
091              $properties[] = $compiledRoute->getVariables();
092              $properties[] = $route->getDefaults();
093              $properties[] = $route->getRequirements();
094              $properties[] = $compiledRoute->getTokens();
095              $properties[] = $compiledRoute->getHostTokens();
096   
097              $routes .= sprintf("        '%s' => %s,\n", $name, str_replace("\n", '', var_export($properties, true)));
098          }
099          $routes .= '    )';
100   
101          return $routes;
102      }
103   
104      /**
105       * Generates PHP code representing the `generate` method that implements the UrlGeneratorInterface.
106       *
107       * @return string PHP code
108       */
109      private function generateGenerateMethod()
110      {
111          return <<<EOF
112      public function generate(\$name, \$parameters = array(), \$referenceType = self::ABSOLUTE_PATH)
113      {
114          if (!isset(self::\$declaredRoutes[\$name])) {
115              throw new RouteNotFoundException(sprintf('Unable to generate a URL for the named route "%s" as such route does not exist.', \$name));
116          }
117   
118          list(\$variables, \$defaults, \$requirements, \$tokens, \$hostTokens) = self::\$declaredRoutes[\$name];
119   
120          return \$this->doGenerate(\$variables, \$defaults, \$requirements, \$tokens, \$parameters, \$name, \$referenceType, \$hostTokens);
121      }
122  EOF;
123   
124      }
125  }
126