From 137518de5d693c9d609944e4cf6a787546d79eab Mon Sep 17 00:00:00 2001 From: Yonel Ceruto Date: Fri, 17 Nov 2023 12:44:30 -0500 Subject: [PATCH] add argument to prepend extension config --- src/Symfony/Component/DependencyInjection/CHANGELOG.md | 5 +++++ .../Loader/Configurator/ContainerConfigurator.php | 8 +++++++- .../Tests/Extension/AbstractExtensionTest.php | 2 +- .../Tests/Fixtures/AcmeFooBundle/AcmeFooBundle.php | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) 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 pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

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:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy