minor #31716 [DI] removed support for extension config without ConfigurationInterface implem (ro0NL)
This PR was merged into the 5.0-dev branch.
Discussion
----------
[DI] removed support for extension config without ConfigurationInterface implem
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | no
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no
| Tests pass? | yes <!-- please add some, will be required by reviewers -->
| Fixed tickets | #... <!-- #-prefixed issue number(s), if any -->
| License | MIT
| Doc PR | symfony/symfony-docs#... <!-- required for new features -->
See #27042
Commits
-------
4dd84f0720
[DI] removed support for extension config without ConfigurationInterface implem
This commit is contained in:
commit
d4464afeb9
@ -1,6 +1,11 @@
|
||||
CHANGELOG
|
||||
=========
|
||||
|
||||
5.0.0
|
||||
-----
|
||||
|
||||
* removed support for auto-discovered extension configuration class which does not implement `ConfigurationInterface`
|
||||
|
||||
4.4.0
|
||||
-----
|
||||
|
||||
|
@ -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()) {
|
||||
|
@ -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
|
||||
|
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace Symfony\Component\DependencyInjection\Tests\Fixtures\Extension\InvalidConfig;
|
||||
|
||||
class Configuration
|
||||
{
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace Symfony\Component\DependencyInjection\Tests\Fixtures\Extension\InvalidConfig;
|
||||
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Extension\Extension as BaseExtension;
|
||||
|
||||
class InvalidConfigExtension extends BaseExtension
|
||||
{
|
||||
public function load(array $configs, ContainerBuilder $container)
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace Symfony\Component\DependencyInjection\Tests\Fixtures\Extension\SemiValidConfig;
|
||||
|
||||
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
|
||||
use Symfony\Component\Config\Definition\ConfigurationInterface;
|
||||
|
||||
class Configuration implements ConfigurationInterface
|
||||
{
|
||||
public function __construct($required)
|
||||
{
|
||||
}
|
||||
|
||||
public function getConfigTreeBuilder()
|
||||
{
|
||||
return new TreeBuilder('root');
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace Symfony\Component\DependencyInjection\Tests\Fixtures\Extension\SemiValidConfig;
|
||||
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Extension\Extension as BaseExtension;
|
||||
|
||||
class SemiValidConfigExtension extends BaseExtension
|
||||
{
|
||||
public function load(array $configs, ContainerBuilder $container)
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace Symfony\Component\DependencyInjection\Tests\Fixtures\Extension\ValidConfig;
|
||||
|
||||
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
|
||||
use Symfony\Component\Config\Definition\ConfigurationInterface;
|
||||
|
||||
class Configuration implements ConfigurationInterface
|
||||
{
|
||||
public function getConfigTreeBuilder()
|
||||
{
|
||||
return new TreeBuilder('root');
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace Symfony\Component\DependencyInjection\Tests\Fixtures\Extension\ValidConfig;
|
||||
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Extension\Extension as BaseExtension;
|
||||
|
||||
class ValidConfigExtension extends BaseExtension
|
||||
{
|
||||
public function __construct($optional = null)
|
||||
{
|
||||
}
|
||||
|
||||
public function load(array $configs, ContainerBuilder $container)
|
||||
{
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user