class DefinitionDecorator

This definition decorates another definition.

@author Johannes M. Schmitt <schmittjoh@gmail.com>

@api

Hierarchy

Expanded class hierarchy of DefinitionDecorator

5 files declare their use of DefinitionDecorator
DefinitionDecoratorTest.php in drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/DefinitionDecoratorTest.php
ResolveDefinitionTemplatesPass.php in drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php
ResolveDefinitionTemplatesPassTest.php in drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Compiler/ResolveDefinitionTemplatesPassTest.php
XmlFileLoader.php in drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php
YamlFileLoader.php in drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php

File

drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/DefinitionDecorator.php, line 24

Namespace

Symfony\Component\DependencyInjection
View source
class DefinitionDecorator extends Definition {
  private $parent;
  private $changes;

  /**
   * Constructor.
   *
   * @param Definition $parent The Definition instance to decorate.
   *
   * @api
   */
  public function __construct($parent) {
    parent::__construct();
    $this->parent = $parent;
    $this->changes = array();
  }

  /**
   * Returns the Definition being decorated.
   *
   * @return Definition
   *
   * @api
   */
  public function getParent() {
    return $this->parent;
  }

  /**
   * Returns all changes tracked for the Definition object.
   *
   * @return array An array of changes for this Definition
   *
   * @api
   */
  public function getChanges() {
    return $this->changes;
  }

  /**
   * {@inheritDoc}
   *
   * @api
   */
  public function setClass($class) {
    $this->changes['class'] = true;
    return parent::setClass($class);
  }

  /**
   * {@inheritDoc}
   *
   * @api
   */
  public function setFactoryClass($class) {
    $this->changes['factory_class'] = true;
    return parent::setFactoryClass($class);
  }

  /**
   * {@inheritDoc}
   *
   * @api
   */
  public function setFactoryMethod($method) {
    $this->changes['factory_method'] = true;
    return parent::setFactoryMethod($method);
  }

  /**
   * {@inheritDoc}
   *
   * @api
   */
  public function setFactoryService($service) {
    $this->changes['factory_service'] = true;
    return parent::setFactoryService($service);
  }

  /**
   * {@inheritDoc}
   *
   * @api
   */
  public function setConfigurator($callable) {
    $this->changes['configurator'] = true;
    return parent::setConfigurator($callable);
  }

  /**
   * {@inheritDoc}
   *
   * @api
   */
  public function setFile($file) {
    $this->changes['file'] = true;
    return parent::setFile($file);
  }

  /**
   * {@inheritDoc}
   *
   * @api
   */
  public function setPublic($boolean) {
    $this->changes['public'] = true;
    return parent::setPublic($boolean);
  }

  /**
   * Gets an argument to pass to the service constructor/factory method.
   *
   * If replaceArgument() has been used to replace an argument, this method
   * will return the replacement value.
   *
   * @param integer $index
   *
   * @return mixed The argument value
   *
   * @api
   */
  public function getArgument($index) {
    if (array_key_exists('index_' . $index, $this->arguments)) {
      return $this->arguments['index_' . $index];
    }
    $lastIndex = count(array_filter(array_keys($this->arguments), 'is_int')) - 1;
    if ($index < 0 || $index > $lastIndex) {
      throw new OutOfBoundsException(sprintf('The index "%d" is not in the range [0, %d].', $index, $lastIndex));
    }
    return $this->arguments[$index];
  }

  /**
   * You should always use this method when overwriting existing arguments
   * of the parent definition.
   *
   * If you directly call setArguments() keep in mind that you must follow
   * certain conventions when you want to overwrite the arguments of the
   * parent definition, otherwise your arguments will only be appended.
   *
   * @param integer $index
   * @param mixed   $value
   *
   * @return DefinitionDecorator the current instance
   * @throws InvalidArgumentException when $index isn't an integer
   *
   * @api
   */
  public function replaceArgument($index, $value) {
    if (!is_int($index)) {
      throw new InvalidArgumentException('$index must be an integer.');
    }
    $this->arguments['index_' . $index] = $value;
    return $this;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Definition::$abstract private property
Definition::$arguments protected property
Definition::$calls private property
Definition::$class private property
Definition::$configurator private property
Definition::$factoryClass private property
Definition::$factoryMethod private property
Definition::$factoryService private property
Definition::$file private property
Definition::$properties private property
Definition::$public private property
Definition::$scope private property
Definition::$synthetic private property
Definition::$tags private property
Definition::addArgument public function Adds an argument to pass to the service constructor/factory method.
Definition::addMethodCall public function Adds a method to call after service initialization.
Definition::addTag public function Adds a tag for this definition.
Definition::clearTag public function Clears all tags for a given name.
Definition::clearTags public function Clears the tags for this definition.
Definition::getArguments public function Gets the arguments to pass to the service constructor/factory method.
Definition::getClass public function Gets the service class.
Definition::getConfigurator public function Gets the configurator to call after the service is fully initialized.
Definition::getFactoryClass public function Gets the factory class.
Definition::getFactoryMethod public function Gets the factory method.
Definition::getFactoryService public function Gets the factory service id.
Definition::getFile public function Gets the file to require before creating the service.
Definition::getMethodCalls public function Gets the methods to call after service initialization.
Definition::getProperties public function @api
Definition::getScope public function Returns the scope of the service
Definition::getTag public function Gets a tag by name.
Definition::getTags public function Returns all tags.
Definition::hasMethodCall public function Check if the current definition has a given method to call after service initialization.
Definition::hasTag public function Whether this definition has a tag with the given name
Definition::isAbstract public function Whether this definition is abstract, that means it merely serves as a template for other definitions.
Definition::isPublic public function Whether this service is public facing
Definition::isSynthetic public function Whether this definition is synthetic, that is not constructed by the container, but dynamically injected.
Definition::removeMethodCall public function Removes a method to call after service initialization.
Definition::setAbstract public function Whether this definition is abstract, that means it merely serves as a template for other definitions.
Definition::setArguments public function Sets the arguments to pass to the service constructor/factory method.
Definition::setMethodCalls public function Sets the methods to call after service initialization.
Definition::setProperties public function @api
Definition::setProperty public function @api
Definition::setScope public function Sets the scope of the service
Definition::setSynthetic public function Sets whether this definition is synthetic, that is not constructed by the container, but dynamically injected.
Definition::setTags public function Sets tags for this definition
DefinitionDecorator::$changes private property
DefinitionDecorator::$parent private property
DefinitionDecorator::getArgument public function Gets an argument to pass to the service constructor/factory method. Overrides Definition::getArgument
DefinitionDecorator::getChanges public function Returns all changes tracked for the Definition object.
DefinitionDecorator::getParent public function Returns the Definition being decorated.
DefinitionDecorator::replaceArgument public function You should always use this method when overwriting existing arguments of the parent definition. Overrides Definition::replaceArgument
DefinitionDecorator::setClass public function @api Overrides Definition::setClass
DefinitionDecorator::setConfigurator public function @api Overrides Definition::setConfigurator
DefinitionDecorator::setFactoryClass public function @api Overrides Definition::setFactoryClass
DefinitionDecorator::setFactoryMethod public function @api Overrides Definition::setFactoryMethod
DefinitionDecorator::setFactoryService public function @api Overrides Definition::setFactoryService
DefinitionDecorator::setFile public function @api Overrides Definition::setFile
DefinitionDecorator::setPublic public function @api Overrides Definition::setPublic
DefinitionDecorator::__construct public function Constructor. Overrides Definition::__construct