From a7ecb8568da1d3c7fc0e84030df2c8ecc5262267 Mon Sep 17 00:00:00 2001 From: Yonel Ceruto Date: Fri, 17 May 2024 11:52:00 -0400 Subject: [PATCH] Fix prepending strategy for php config loader --- .../DependencyInjection/Loader/PhpFileLoader.php | 2 +- .../Tests/Fixtures/config/config_builder.expected.yml | 2 +- .../Tests/Fixtures/config/config_builder.php | 5 ++++- .../Tests/Fixtures/config/nested_config_builder.php | 11 +++++++++++ .../Tests/Loader/PhpFileLoaderTest.php | 1 + 5 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/nested_config_builder.php diff --git a/src/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php b/src/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php index 35173cf3a031e..f6d032a4a0473 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php +++ b/src/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php @@ -146,7 +146,7 @@ class_exists(ContainerConfigurator::class); $callback(...$arguments); foreach ($configBuilders as $configBuilder) { - $containerConfigurator->extension($configBuilder->getExtensionAlias(), $configBuilder->toArray(), $this->prepend); + $this->loadExtensionConfig($configBuilder->getExtensionAlias(), ContainerConfigurator::processValue($configBuilder->toArray())); } $this->loadExtensionConfigs(); diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/config_builder.expected.yml b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/config_builder.expected.yml index efe9667c0c7fd..b34e58227de11 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/config_builder.expected.yml +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/config_builder.expected.yml @@ -1,5 +1,5 @@ parameters: - acme.configs: [{ color: blue }] + acme.configs: [{ color: red }, { color: blue }] services: service_container: diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/config_builder.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/config_builder.php index 02772e64ccb99..4b99622eeff1e 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/config_builder.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/config_builder.php @@ -1,11 +1,14 @@ import('nested_config_builder.php'); + $config->color('blue'); }; diff --git a/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/nested_config_builder.php b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/nested_config_builder.php new file mode 100644 index 0000000000000..7b475b200783d --- /dev/null +++ b/src/Symfony/Component/DependencyInjection/Tests/Fixtures/config/nested_config_builder.php @@ -0,0 +1,11 @@ +color('red'); +}; diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php index d3721286cd12a..d7df9b6f11875 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php @@ -56,6 +56,7 @@ public function testPrependExtensionConfig() $loader->load('config/config_builder.php'); $expected = [ + ['color' => 'red'], ['color' => 'blue'], ['foo' => 'bar'], ];