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. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
Extension.php
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 * Returns the base path for the XSD files.
031 *
032 * @return string The XSD base path
033 */
034 public function getXsdValidationBasePath()
035 {
036 return false;
037 }
038
039 /**
040 * Returns the namespace to be used for this extension (XML namespace).
041 *
042 * @return string The XML namespace
043 */
044 public function getNamespace()
045 {
046 return 'http://example.org/schema/dic/'.$this->getAlias();
047 }
048
049 /**
050 * Returns the recommended alias to use in XML.
051 *
052 * This alias is also the mandatory prefix to use when using YAML.
053 *
054 * This convention is to remove the "Extension" postfix from the class
055 * name and then lowercase and underscore the result. So:
056 *
057 * AcmeHelloExtension
058 *
059 * becomes
060 *
061 * acme_hello
062 *
063 * This can be overridden in a sub-class to specify the alias manually.
064 *
065 * @return string The alias
066 *
067 * @throws BadMethodCallException When the extension name does not follow conventions
068 */
069 public function getAlias()
070 {
071 $className = get_class($this);
072 if (substr($className, -9) != 'Extension') {
073 throw new BadMethodCallException('This extension does not follow the naming convention; you must overwrite the getAlias() method.');
074 }
075 $classBaseName = substr(strrchr($className, '\\'), 1, -9);
076
077 return Container::underscore($classBaseName);
078 }
079
080 /**
081 * {@inheritdoc}
082 */
083 public function getConfiguration(array $config, ContainerBuilder $container)
084 {
085 $reflected = new \ReflectionClass($this);
086 $namespace = $reflected->getNamespaceName();
087
088 $class = $namespace.'\\Configuration';
089 if (class_exists($class)) {
090 $r = new \ReflectionClass($class);
091 $container->addResource(new FileResource($r->getFileName()));
092
093 if (!method_exists($class, '__construct')) {
094 $configuration = new $class();
095
096 return $configuration;
097 }
098 }
099 }
100
101 final protected function processConfiguration(ConfigurationInterface $configuration, array $configs)
102 {
103 $processor = new Processor();
104
105 return $processor->processConfiguration($configuration, $configs);
106 }
107
108 /**
109 * @param ContainerBuilder $container
110 * @param array $config
111 *
112 * @return bool Whether the configuration is enabled
113 *
114 * @throws InvalidArgumentException When the config is not enableable
115 */
116 protected function isConfigEnabled(ContainerBuilder $container, array $config)
117 {
118 if (!array_key_exists('enabled', $config)) {
119 throw new InvalidArgumentException("The config array has no 'enabled' key.");
120 }
121
122 return (bool) $container->getParameterBag()->resolveValue($config['enabled']);
123 }
124 }
125