From 0beb64a77c208ed0a159c4a4c967998dcc94af72 Mon Sep 17 00:00:00 2001 From: Lukas Kahwe Smith Date: Tue, 6 Mar 2018 12:22:04 +0100 Subject: [PATCH] fix regression when extending the Container class without a constructor regression introduced in https://github.com/symfony/symfony/commit/c026ec63e33c696c422f3d72c99c8fe64f091376#diff-f7b23d463cba27ac5e4cb677f2be7623R985 --- .../Component/DependencyInjection/Dumper/PhpDumper.php | 10 +++++++--- .../Fixtures/Container/NoConstructorContainer.php | 4 +++- ...m_container_class_constructor_without_arguments.php | 1 + ...ainer_class_with_optional_constructor_arguments.php | 1 + 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php index f4aa0582f7..4f2c4a15cb 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php @@ -981,9 +981,13 @@ EOF; if ($this->container->isCompiled()) { if (Container::class !== $baseClassWithNamespace) { $r = $this->container->getReflectionClass($baseClassWithNamespace, false); - - if (null !== $r && (null !== $constructor = $r->getConstructor()) && 0 === $constructor->getNumberOfRequiredParameters()) { - $code .= " parent::__construct();\n\n"; + if (null !== $r + && (null !== $constructor = $r->getConstructor()) + && 0 === $constructor->getNumberOfRequiredParameters() + && Container::class !== $constructor->getDeclaringClass()->name + ) { + $code .= " parent::__construct();\n"; + $code .= " \$this->parameterBag = null;\n\n"; } } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/Container/NoConstructorContainer.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/Container/NoConstructorContainer.php index 7514cc7c1b..b14b013f1f 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/Container/NoConstructorContainer.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/Container/NoConstructorContainer.php @@ -2,6 +2,8 @@ namespace Symfony\Component\DependencyInjection\Tests\Fixtures\Container; -class NoConstructorContainer +use Symfony\Component\DependencyInjection\Container; + +class NoConstructorContainer extends Container { } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/custom_container_class_constructor_without_arguments.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/custom_container_class_constructor_without_arguments.php index 3020602b89..0a443f3a79 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/custom_container_class_constructor_without_arguments.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/custom_container_class_constructor_without_arguments.php @@ -24,6 +24,7 @@ class ProjectServiceContainer extends \Symfony\Component\DependencyInjection\Tes public function __construct() { parent::__construct(); + $this->parameterBag = null; $this->services = array(); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/custom_container_class_with_optional_constructor_arguments.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/custom_container_class_with_optional_constructor_arguments.php index d65ac7dfbc..6bf3c90613 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/custom_container_class_with_optional_constructor_arguments.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/custom_container_class_with_optional_constructor_arguments.php @@ -24,6 +24,7 @@ class ProjectServiceContainer extends \Symfony\Component\DependencyInjection\Tes public function __construct() { parent::__construct(); + $this->parameterBag = null; $this->services = array();