class RepeatedPass

A pass that might be run repeatedly.

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

Hierarchy

Expanded class hierarchy of RepeatedPass

3 files declare their use of RepeatedPass
AnalyzeServiceReferencesPassTest.php in drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Compiler/AnalyzeServiceReferencesPassTest.php
InlineServiceDefinitionsPassTest.php in drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Compiler/InlineServiceDefinitionsPassTest.php
RemoveUnusedDefinitionsPassTest.php in drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveUnusedDefinitionsPassTest.php

File

drupal/core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php, line 22

Namespace

Symfony\Component\DependencyInjection\Compiler
View source
class RepeatedPass implements CompilerPassInterface {

  /**
   * @var Boolean
   */
  private $repeat = false;

  /**
   * @var RepeatablePassInterface[]
   */
  private $passes;

  /**
   * Constructor.
   *
   * @param RepeatablePassInterface[] $passes An array of RepeatablePassInterface objects
   *
   * @throws InvalidArgumentException when the passes don't implement RepeatablePassInterface
   */
  public function __construct(array $passes) {
    foreach ($passes as $pass) {
      if (!$pass instanceof RepeatablePassInterface) {
        throw new InvalidArgumentException('$passes must be an array of RepeatablePassInterface.');
      }
      $pass
        ->setRepeatedPass($this);
    }
    $this->passes = $passes;
  }

  /**
   * Process the repeatable passes that run more than once.
   *
   * @param ContainerBuilder $container
   */
  public function process(ContainerBuilder $container) {
    $this->repeat = false;
    foreach ($this->passes as $pass) {
      $pass
        ->process($container);
    }
    if ($this->repeat) {
      $this
        ->process($container);
    }
  }

  /**
   * Sets if the pass should repeat
   */
  public function setRepeat() {
    $this->repeat = true;
  }

  /**
   * Returns the passes
   *
   * @return RepeatablePassInterface[] An array of RepeatablePassInterface objects
   */
  public function getPasses() {
    return $this->passes;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
RepeatedPass::$passes private property
RepeatedPass::$repeat private property
RepeatedPass::getPasses public function Returns the passes
RepeatedPass::process public function Process the repeatable passes that run more than once. Overrides CompilerPassInterface::process
RepeatedPass::setRepeat public function Sets if the pass should repeat
RepeatedPass::__construct public function Constructor.