diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php index b89b7344ba..6ce1542aa6 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php @@ -38,18 +38,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface protected $injectors = array(); protected $compiler; - /** - * Constructor. - * - * @param ParameterBagInterface $parameterBag - */ - public function __construct(ParameterBagInterface $parameterBag = null) - { - parent::__construct($parameterBag); - - $this->compiler = new Compiler(); - } - /** * Registers an extension. * @@ -175,6 +163,10 @@ class ContainerBuilder extends Container implements TaggedContainerInterface */ public function addCompilerPass(CompilerPassInterface $pass, $type = PassConfig::TYPE_BEFORE_OPTIMIZATION) { + if (null === $this->compiler) { + $this->compiler = new Compiler(); + } + $this->compiler->addPass($pass, $type); $this->addObjectResource($pass); @@ -187,6 +179,10 @@ class ContainerBuilder extends Container implements TaggedContainerInterface */ public function getCompilerPassConfig() { + if (null === $this->compiler) { + $this->compiler = new Compiler(); + } + return $this->compiler->getPassConfig(); } @@ -197,6 +193,10 @@ class ContainerBuilder extends Container implements TaggedContainerInterface */ public function getCompiler() { + if (null === $this->compiler) { + $this->compiler = new Compiler(); + } + return $this->compiler; } @@ -391,6 +391,10 @@ class ContainerBuilder extends Container implements TaggedContainerInterface */ public function compile() { + if (null === $this->compiler) { + $this->compiler = new Compiler(); + } + foreach ($this->compiler->getPassConfig()->getPasses() as $pass) { $this->addObjectResource($pass); }