Skip to content

Commit 7af212d

Browse files
committed
[DI] Handle invalid bundle configuration class
1 parent b1041a6 commit 7af212d

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ CHANGELOG
99
* added support for service's decorators autowiring
1010
* deprecated the `TypedReference::canBeAutoregistered()` and `TypedReference::getRequiringClass()` methods
1111
* environment variables are validated when used in extension configuration
12+
* deprecated support for auto-discovered extension configuration class which does not implement `ConfigurationInterface`
1213

1314
4.0.0
1415
-----

Extension/Extension.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,23 @@ public function getConfiguration(array $config, ContainerBuilder $container)
8282
$class = get_class($this);
8383
$class = substr_replace($class, '\Configuration', strrpos($class, '\\'));
8484
$class = $container->getReflectionClass($class);
85-
$constructor = $class ? $class->getConstructor() : null;
8685

87-
if ($class && (!$constructor || !$constructor->getNumberOfRequiredParameters())) {
86+
if (!$class) {
87+
return null;
88+
}
89+
90+
if (!$class->implementsInterface(ConfigurationInterface::class)) {
91+
@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);
92+
//throw new LogicException(sprintf('The extension configuration class "%s" must implement "%s".', $class->getName(), ConfigurationInterface::class));
93+
94+
return null;
95+
}
96+
97+
if (!($constructor = $class->getConstructor()) || !$constructor->getNumberOfRequiredParameters()) {
8898
return $class->newInstance();
8999
}
100+
101+
return null;
90102
}
91103

92104
final protected function processConfiguration(ConfigurationInterface $configuration, array $configs)

0 commit comments

Comments
 (0)