diff --git a/src/Symfony/Component/DependencyInjection/CHANGELOG.md b/src/Symfony/Component/DependencyInjection/CHANGELOG.md index b274283d2772d..0d923f0b6d2e5 100644 --- a/src/Symfony/Component/DependencyInjection/CHANGELOG.md +++ b/src/Symfony/Component/DependencyInjection/CHANGELOG.md @@ -5,6 +5,7 @@ CHANGELOG ----- * removed `Container::isFrozen` + * removed support for dumping an ucompiled container in `PhpDumper` 3.3.0 ----- diff --git a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php index 12e43ab635c5e..05f9a3d2e6464 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php @@ -25,6 +25,7 @@ use Symfony\Component\DependencyInjection\Parameter; use Symfony\Component\DependencyInjection\Exception\EnvParameterException; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; +use Symfony\Component\DependencyInjection\Exception\LogicException; use Symfony\Component\DependencyInjection\Exception\RuntimeException; use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; use Symfony\Component\DependencyInjection\LazyProxy\ProxyHelper; @@ -80,7 +81,7 @@ class PhpDumper extends Dumper public function __construct(ContainerBuilder $container) { if (!$container->isCompiled()) { - @trigger_error('Dumping an uncompiled ContainerBuilder is deprecated since version 3.3 and will not be supported anymore in 4.0. Compile the container beforehand.', E_USER_DEPRECATED); + throw new LogicException('Cannot dump an uncompiled container.'); } parent::__construct($container); @@ -154,17 +155,11 @@ public function dump(array $options = array()) } } - $code = $this->startClass($options['class'], $options['base_class'], $options['namespace']); - - if ($this->container->isCompiled()) { - $code .= $this->addFrozenConstructor(); - $code .= $this->addFrozenCompile(); - $code .= $this->addFrozenIsCompiled(); - } else { - $code .= $this->addConstructor(); - } - - $code .= + $code = + $this->startClass($options['class'], $options['base_class'], $options['namespace']). + $this->addConstructor(). + $this->addCompile(). + $this->addIsCompiled(). $this->addServices(). $this->addDefaultParametersMethod(). $this->endClass(). @@ -783,7 +778,6 @@ private function addNewInstance(Definition $definition, $return, $instantiation, */ private function startClass($class, $baseClass, $namespace) { - $bagClass = $this->container->isCompiled() ? 'use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;' : 'use Symfony\Component\DependencyInjection\ParameterBag\\ParameterBag;'; $namespaceLine = $namespace ? "\nnamespace $namespace;\n" : ''; return <<docStar} * $class. @@ -813,46 +807,12 @@ class $class extends $baseClass EOF; } - /** - * Adds the constructor. - * - * @return string - */ - private function addConstructor() - { - $targetDirs = $this->exportTargetDirs(); - $arguments = $this->container->getParameterBag()->all() ? 'new ParameterBag($this->getDefaultParameters())' : null; - - $code = <<docStar} - * Constructor. - */ - public function __construct() - {{$targetDirs} - parent::__construct($arguments); - -EOF; - - $code .= $this->addNormalizedIds(); - $code .= $this->addMethodMap(); - $code .= $this->addPrivateServices(); - $code .= $this->addAliases(); - - $code .= <<<'EOF' - } - -EOF; - - return $code; - } - /** * Adds the constructor for a compiled container. * * @return string */ - private function addFrozenConstructor() + private function addConstructor() { $targetDirs = $this->exportTargetDirs(); @@ -888,7 +848,7 @@ public function __construct() * * @return string */ - private function addFrozenCompile() + private function addCompile() { return <<container->getAliases()) { - return $this->container->isCompiled() ? "\n \$this->aliases = array();\n" : ''; + return "\n \$this->aliases = array();\n"; } $code = " \$this->aliases = array(\n"; @@ -1046,9 +1006,7 @@ private function addDefaultParametersMethod() } $parameters = sprintf("array(\n%s\n%s)", implode("\n", $php), str_repeat(' ', 8)); - $code = ''; - if ($this->container->isCompiled()) { - $code .= <<<'EOF' + $code = <<<'EOF' /** * {@inheritdoc} @@ -1102,13 +1060,13 @@ public function getParameterBag() } EOF; - if ('' === $this->docStar) { - $code = str_replace('/**', '/*', $code); - } + if ('' === $this->docStar) { + $code = str_replace('/**', '/*', $code); + } - if ($dynamicPhp) { - $loadedDynamicParameters = $this->exportParameters(array_combine(array_keys($dynamicPhp), array_fill(0, count($dynamicPhp), false)), '', 8); - $getDynamicParameter = <<<'EOF' + if ($dynamicPhp) { + $loadedDynamicParameters = $this->exportParameters(array_combine(array_keys($dynamicPhp), array_fill(0, count($dynamicPhp), false)), '', 8); + $getDynamicParameter = <<<'EOF' switch ($name) { %s default: throw new InvalidArgumentException(sprintf('The dynamic parameter "%%s" must be defined.', $name)); @@ -1117,13 +1075,13 @@ public function getParameterBag() return $this->dynamicParameters[$name] = $value; EOF; - $getDynamicParameter = sprintf($getDynamicParameter, implode("\n", $dynamicPhp)); - } else { - $loadedDynamicParameters = 'array()'; - $getDynamicParameter = str_repeat(' ', 8).'throw new InvalidArgumentException(sprintf(\'The dynamic parameter "%s" must be defined.\', $name));'; - } + $getDynamicParameter = sprintf($getDynamicParameter, implode("\n", $dynamicPhp)); + } else { + $loadedDynamicParameters = 'array()'; + $getDynamicParameter = str_repeat(' ', 8).'throw new InvalidArgumentException(sprintf(\'The dynamic parameter "%s" must be defined.\', $name));'; + } - $code .= <<docStar} * Gets the default parameters. * @@ -1595,7 +1546,7 @@ private function dumpLiteralClass($class) */ private function dumpParameter($name) { - if ($this->container->isCompiled() && $this->container->hasParameter($name)) { + if ($this->container->hasParameter($name)) { return $this->dumpValue($this->container->getParameter($name), false); } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php b/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php index aea09d916ac6b..a157c09f3ff95 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Dumper/PhpDumperTest.php @@ -130,14 +130,13 @@ public function testAddParameters() } /** - * @group legacy - * @expectedDeprecation Dumping an uncompiled ContainerBuilder is deprecated since version 3.3 and will not be supported anymore in 4.0. Compile the container beforehand. + * @expectedException \Symfony\Component\DependencyInjection\Exception\LogicException + * @expectedExceptionMessage Cannot dump an uncompiled container. */ public function testAddServiceWithoutCompilation() { $container = include self::$fixturesPath.'/containers/container9.php'; - $dumper = new PhpDumper($container); - $this->assertEquals(str_replace('%path%', str_replace('\\', '\\\\', self::$fixturesPath.DIRECTORY_SEPARATOR.'includes'.DIRECTORY_SEPARATOR), file_get_contents(self::$fixturesPath.'/php/services9.php')), $dumper->dump(), '->dump() dumps services'); + new PhpDumper($container); } public function testAddService()