Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

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

Extension.php

Zuletzt modifiziert: 09.10.2024, 12:56 - Dateigröße: 3.50 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\DependencyInjection\Extension;
013   
014  use Symfony\Component\DependencyInjection\Container;
015  use Symfony\Component\DependencyInjection\Exception\BadMethodCallException;
016  use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
017  use Symfony\Component\Config\Resource\FileResource;
018  use Symfony\Component\DependencyInjection\ContainerBuilder;
019  use Symfony\Component\Config\Definition\Processor;
020  use Symfony\Component\Config\Definition\ConfigurationInterface;
021   
022  /**
023   * Provides useful features shared by many extensions.
024   *
025   * @author Fabien Potencier <fabien@symfony.com>
026   */
027  abstract class Extension implements ExtensionInterface, ConfigurationExtensionInterface
028  {
029      /**
030       * {@inheritdoc}
031       */
032      public function getXsdValidationBasePath()
033      {
034          return false;
035      }
036   
037      /**
038       * {@inheritdoc}
039       */
040      public function getNamespace()
041      {
042          return 'http://example.org/schema/dic/'.$this->getAlias();
043      }
044   
045      /**
046       * Returns the recommended alias to use in XML.
047       *
048       * This alias is also the mandatory prefix to use when using YAML.
049       *
050       * This convention is to remove the "Extension" postfix from the class
051       * name and then lowercase and underscore the result. So:
052       *
053       *     AcmeHelloExtension
054       *
055       * becomes
056       *
057       *     acme_hello
058       *
059       * This can be overridden in a sub-class to specify the alias manually.
060       *
061       * @return string The alias
062       *
063       * @throws BadMethodCallException When the extension name does not follow conventions
064       */
065      public function getAlias()
066      {
067          $className = get_class($this);
068          if (substr($className, -9) != 'Extension') {
069              throw new BadMethodCallException('This extension does not follow the naming convention; you must overwrite the getAlias() method.');
070          }
071          $classBaseName = substr(strrchr($className, '\\'), 1, -9);
072   
073          return Container::underscore($classBaseName);
074      }
075   
076      /**
077       * {@inheritdoc}
078       */
079      public function getConfiguration(array $config, ContainerBuilder $container)
080      {
081          $reflected = new \ReflectionClass($this);
082          $namespace = $reflected->getNamespaceName();
083   
084          $class = $namespace.'\\Configuration';
085          if (class_exists($class)) {
086              $r = new \ReflectionClass($class);
087              $container->addResource(new FileResource($r->getFileName()));
088   
089              if (!method_exists($class, '__construct')) {
090                  return new $class();
091              }
092          }
093      }
094   
095      final protected function processConfiguration(ConfigurationInterface $configuration, array $configs)
096      {
097          $processor = new Processor();
098   
099          return $processor->processConfiguration($configuration, $configs);
100      }
101   
102      /**
103       * @param ContainerBuilder $container
104       * @param array            $config
105       *
106       * @return bool Whether the configuration is enabled
107       *
108       * @throws InvalidArgumentException When the config is not enableable
109       */
110      protected function isConfigEnabled(ContainerBuilder $container, array $config)
111      {
112          if (!array_key_exists('enabled', $config)) {
113              throw new InvalidArgumentException("The config array has no 'enabled' key.");
114          }
115   
116          return (bool) $container->getParameterBag()->resolveValue($config['enabled']);
117      }
118  }
119