From 4dd84f07201fc51148b51b427a46d8f6bb1b408b Mon Sep 17 00:00:00 2001 From: Roland Franssen Date: Thu, 30 May 2019 08:17:44 +0200 Subject: [PATCH] [DI] removed support for extension config without ConfigurationInterface implem --- .../DependencyInjection/CHANGELOG.md | 5 +++ .../Extension/Extension.php | 6 ++-- .../Tests/Extension/ExtensionTest.php | 36 +++++++++++++++++++ .../Extension/InvalidConfig/Configuration.php | 7 ++++ .../InvalidConfig/InvalidConfigExtension.php | 13 +++++++ .../SemiValidConfig/Configuration.php | 18 ++++++++++ .../SemiValidConfigExtension.php | 13 +++++++ .../Extension/ValidConfig/Configuration.php | 14 ++++++++ .../ValidConfig/ValidConfigExtension.php | 17 +++++++++ 9 files changed, 125 insertions(+), 4 deletions(-) create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/Extension/InvalidConfig/Configuration.php create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/Extension/InvalidConfig/InvalidConfigExtension.php create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/Extension/SemiValidConfig/Configuration.php create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/Extension/SemiValidConfig/SemiValidConfigExtension.php create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/Extension/ValidConfig/Configuration.php create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/Extension/ValidConfig/ValidConfigExtension.php diff --git a/src/Symfony/Component/DependencyInjection/CHANGELOG.md b/src/Symfony/Component/DependencyInjection/CHANGELOG.md index 152a17ce9a..b18f63122c 100644 --- a/src/Symfony/Component/DependencyInjection/CHANGELOG.md +++ b/src/Symfony/Component/DependencyInjection/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +5.0.0 +----- + +* removed support for auto-discovered extension configuration class which does not implement `ConfigurationInterface` + 4.4.0 ----- diff --git a/src/Symfony/Component/DependencyInjection/Extension/Extension.php b/src/Symfony/Component/DependencyInjection/Extension/Extension.php index 1285334f58..fd333dc505 100644 --- a/src/Symfony/Component/DependencyInjection/Extension/Extension.php +++ b/src/Symfony/Component/DependencyInjection/Extension/Extension.php @@ -17,6 +17,7 @@ use Symfony\Component\DependencyInjection\Container; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\BadMethodCallException; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; +use Symfony\Component\DependencyInjection\Exception\LogicException; /** * Provides useful features shared by many extensions. @@ -88,10 +89,7 @@ abstract class Extension implements ExtensionInterface, ConfigurationExtensionIn } if (!$class->implementsInterface(ConfigurationInterface::class)) { - @trigger_error(sprintf('Not implementing "%s" in the extension configuration class "%s" is deprecated since Symfony 4.1.', ConfigurationInterface::class, $class->getName()), E_USER_DEPRECATED); - //throw new LogicException(sprintf('The extension configuration class "%s" must implement "%s".', $class->getName(), ConfigurationInterface::class)); - - return null; + throw new LogicException(sprintf('The extension configuration class "%s" must implement "%s".', $class->getName(), ConfigurationInterface::class)); } if (!($constructor = $class->getConstructor()) || !$constructor->getNumberOfRequiredParameters()) { diff --git a/src/Symfony/Component/DependencyInjection/Tests/Extension/ExtensionTest.php b/src/Symfony/Component/DependencyInjection/Tests/Extension/ExtensionTest.php index 3c912f2a13..a57b0576a4 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Extension/ExtensionTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Extension/ExtensionTest.php @@ -14,6 +14,10 @@ namespace Symfony\Component\DependencyInjection\Tests\Extension; use PHPUnit\Framework\TestCase; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\Extension; +use Symfony\Component\DependencyInjection\Tests\Fixtures\Extension\InvalidConfig\InvalidConfigExtension; +use Symfony\Component\DependencyInjection\Tests\Fixtures\Extension\SemiValidConfig\SemiValidConfigExtension; +use Symfony\Component\DependencyInjection\Tests\Fixtures\Extension\ValidConfig\Configuration; +use Symfony\Component\DependencyInjection\Tests\Fixtures\Extension\ValidConfig\ValidConfigExtension; class ExtensionTest extends TestCase { @@ -44,6 +48,38 @@ class ExtensionTest extends TestCase $extension->isConfigEnabled(new ContainerBuilder(), []); } + + public function testNoConfiguration() + { + $extension = new EnableableExtension(); + + $this->assertNull($extension->getConfiguration([], new ContainerBuilder())); + } + + public function testValidConfiguration() + { + $extension = new ValidConfigExtension(); + + $this->assertInstanceOf(Configuration::class, $extension->getConfiguration([], new ContainerBuilder())); + } + + public function testSemiValidConfiguration() + { + $extension = new SemiValidConfigExtension(); + + $this->assertNull($extension->getConfiguration([], new ContainerBuilder())); + } + + /** + * @expectedException \Symfony\Component\DependencyInjection\Exception\LogicException + * @expectedExceptionMessage The extension configuration class "Symfony\Component\DependencyInjection\Tests\Fixtures\Extension\InvalidConfig\Configuration" must implement "Symfony\Component\Config\Definition\ConfigurationInterface". + */ + public function testInvalidConfiguration() + { + $extension = new InvalidConfigExtension(); + + $extension->getConfiguration([], new ContainerBuilder()); + } } class EnableableExtension extends Extension diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/Extension/InvalidConfig/Configuration.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/Extension/InvalidConfig/Configuration.php new file mode 100644 index 0000000000..bcb2995f17 --- /dev/null +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/Extension/InvalidConfig/Configuration.php @@ -0,0 +1,7 @@ +