You are here

class RepeatedPass in Service Container 7

Same name and namespace in other branches
  1. 7.2 modules/providers/service_container_symfony/lib/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php \Symfony\Component\DependencyInjection\Compiler\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 modules/providers/service_container_symfony/lib/Symfony/Component/DependencyInjection/Tests/Compiler/AnalyzeServiceReferencesPassTest.php
InlineServiceDefinitionsPassTest.php in modules/providers/service_container_symfony/lib/Symfony/Component/DependencyInjection/Tests/Compiler/InlineServiceDefinitionsPassTest.php
RemoveUnusedDefinitionsPassTest.php in modules/providers/service_container_symfony/lib/Symfony/Component/DependencyInjection/Tests/Compiler/RemoveUnusedDefinitionsPassTest.php

File

modules/providers/service_container_symfony/lib/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php, line 22

Namespace

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

  /**
   * @var bool
   */
  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.