abstract class Extension

Same name in this branch

Provides useful features shared by many extensions.

@author Fabien Potencier <fabien@symfony.com>

Hierarchy

Expanded class hierarchy of Extension

3 files declare their use of Extension
AddClassesToCachePass.php in drupal/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php
ExtensionLoadedExtension.php in drupal/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/Fixtures/ExtensionLoadedBundle/DependencyInjection/ExtensionLoadedExtension.php
ExtensionPresentExtension.php in drupal/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/Fixtures/ExtensionPresentBundle/DependencyInjection/ExtensionPresentExtension.php
3 string references to 'Extension'
Bundle::getContainerExtension in drupal/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Bundle/Bundle.php
Returns the bundle's container extension.
Extension::getAlias in drupal/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DependencyInjection/Extension.php
Returns the recommended alias to use in XML.
file_views_data in drupal/core/modules/file/file.views.inc
Implements hook_views_data().

File

drupal/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DependencyInjection/Extension.php, line 26

Namespace

Symfony\Component\HttpKernel\DependencyInjection
View source
abstract class Extension implements ExtensionInterface, ConfigurationExtensionInterface {
  private $classes = array();

  /**
   * Gets the classes to cache.
   *
   * @return array An array of classes
   */
  public function getClassesToCompile() {
    return $this->classes;
  }

  /**
   * Adds classes to the class cache.
   *
   * @param array $classes An array of classes
   */
  public function addClassesToCompile(array $classes) {
    $this->classes = array_merge($this->classes, $classes);
  }

  /**
   * Returns the base path for the XSD files.
   *
   * @return string The XSD base path
   */
  public function getXsdValidationBasePath() {
    return false;
  }

  /**
   * Returns the namespace to be used for this extension (XML namespace).
   *
   * @return string The XML namespace
   */
  public function getNamespace() {
    return 'http://example.org/schema/dic/' . $this
      ->getAlias();
  }

  /**
   * Returns the recommended alias to use in XML.
   *
   * This alias is also the mandatory prefix to use when using YAML.
   *
   * This convention is to remove the "Extension" postfix from the class
   * name and then lowercase and underscore the result. So:
   *
   *     AcmeHelloExtension
   *
   * becomes
   *
   *     acme_hello
   *
   * This can be overridden in a sub-class to specify the alias manually.
   *
   * @return string The alias
   */
  public function getAlias() {
    $className = get_class($this);
    if (substr($className, -9) != 'Extension') {
      throw new \BadMethodCallException('This extension does not follow the naming convention; you must overwrite the getAlias() method.');
    }
    $classBaseName = substr(strrchr($className, '\\'), 1, -9);
    return Container::underscore($classBaseName);
  }
  protected final function processConfiguration(ConfigurationInterface $configuration, array $configs) {
    $processor = new Processor();
    return $processor
      ->processConfiguration($configuration, $configs);
  }

  /**
   * {@inheritDoc}
   */
  public function getConfiguration(array $config, ContainerBuilder $container) {
    $reflected = new \ReflectionClass($this);
    $namespace = $reflected
      ->getNamespaceName();
    $class = $namespace . '\\Configuration';
    if (class_exists($class)) {
      if (!method_exists($class, '__construct')) {
        $configuration = new $class();
        return $configuration;
      }
    }
    return null;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Extension::$classes private property
Extension::addClassesToCompile public function Adds classes to the class cache.
Extension::getAlias public function Returns the recommended alias to use in XML. Overrides ExtensionInterface::getAlias
Extension::getClassesToCompile public function Gets the classes to cache.
Extension::getConfiguration public function Returns extension configuration Overrides ConfigurationExtensionInterface::getConfiguration
Extension::getNamespace public function Returns the namespace to be used for this extension (XML namespace). Overrides ExtensionInterface::getNamespace
Extension::getXsdValidationBasePath public function Returns the base path for the XSD files. Overrides ExtensionInterface::getXsdValidationBasePath
Extension::processConfiguration final protected function
ExtensionInterface::load public function Loads a specific configuration. 4