diff --git a/src/Symfony/Component/DependencyInjection/CHANGELOG.md b/src/Symfony/Component/DependencyInjection/CHANGELOG.md index 8930b03ab6ff0..d3ae6c6c359c5 100644 --- a/src/Symfony/Component/DependencyInjection/CHANGELOG.md +++ b/src/Symfony/Component/DependencyInjection/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +7.1 +--- + + * Add argument `$prepend` to `ContainerConfigurator::extension()` to prepend the configuration instead of appending it + 7.0 --- diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php index 883b5542ac51b..ad1110e17442a 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/ContainerConfigurator.php @@ -48,8 +48,14 @@ public function __construct(ContainerBuilder $container, PhpFileLoader $loader, $this->env = $env; } - final public function extension(string $namespace, array $config): void + final public function extension(string $namespace, array $config, bool $prepend = false): void { + if ($prepend) { + $this->container->prependExtensionConfig($namespace, static::processValue($config)); + + return; + } + if (!$this->container->hasExtension($namespace)) { $extensions = array_filter(array_map(fn (ExtensionInterface $ext) => $ext->getAlias(), $this->container->getExtensions())); throw new InvalidArgumentException(sprintf('There is no extension able to load the configuration for "%s" (in "%s"). Looked for namespace "%s", found "%s".', $namespace, $this->file, $namespace, $extensions ? implode('", "', $extensions) : 'none')); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Extension/AbstractExtensionTest.php b/src/Symfony/Component/DependencyInjection/Tests/Extension/AbstractExtensionTest.php index cb56983d365ce..9180ab8342da6 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Extension/AbstractExtensionTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Extension/AbstractExtensionTest.php @@ -63,7 +63,7 @@ public function prependExtension(ContainerConfigurator $container, ContainerBuil $container->extension('third', ['foo' => 'append']); // prepend config - $builder->prependExtensionConfig('third', ['foo' => 'prepend']); + $container->extension('third', ['foo' => 'prepend'], true); } }; diff --git a/src/Symfony/Component/HttpKernel/Tests/Fixtures/AcmeFooBundle/AcmeFooBundle.php b/src/Symfony/Component/HttpKernel/Tests/Fixtures/AcmeFooBundle/AcmeFooBundle.php index 4fba6260f9337..959536ecbdc51 100644 --- a/src/Symfony/Component/HttpKernel/Tests/Fixtures/AcmeFooBundle/AcmeFooBundle.php +++ b/src/Symfony/Component/HttpKernel/Tests/Fixtures/AcmeFooBundle/AcmeFooBundle.php @@ -31,7 +31,7 @@ public function configure(DefinitionConfigurator $definition): void public function prependExtension(ContainerConfigurator $container, ContainerBuilder $builder): void { - $container->extension('loaded', ['bar' => 'baz']); + $container->extension('loaded', ['bar' => 'baz'], true); } public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: