Skip to content

Commit

Permalink
[DependencyInjection] Process PHP configs using the ContainerConfigur…
Browse files Browse the repository at this point in the history
…ator
  • Loading branch information
MatTheCat committed May 17, 2024
1 parent 581fde0 commit 68b1112
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 9 deletions.
10 changes: 1 addition & 9 deletions Loader/PhpFileLoader.php
Original file line number Diff line number Diff line change
Expand Up @@ -145,16 +145,8 @@ class_exists(ContainerConfigurator::class);

$callback(...$arguments);

$this->loadFromExtensions($configBuilders);
}

/**
* @param iterable<ConfigBuilderInterface> $configBuilders
*/
private function loadFromExtensions(iterable $configBuilders): void
{
foreach ($configBuilders as $configBuilder) {
$this->loadExtensionConfig($configBuilder->getExtensionAlias(), $configBuilder->toArray());
$containerConfigurator->extension($configBuilder->getExtensionAlias(), $configBuilder->toArray(), $this->prepend);
}

$this->loadExtensionConfigs();
Expand Down
8 changes: 8 additions & 0 deletions Tests/Fixtures/config/config_builder_env_configurator.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php

use Symfony\Component\DependencyInjection\Tests\Fixtures\AcmeConfig;
use function Symfony\Component\DependencyInjection\Loader\Configurator\env;

return function (AcmeConfig $config) {
$config->color(env('COLOR'));
};
10 changes: 10 additions & 0 deletions Tests/Loader/PhpFileLoaderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -243,4 +243,14 @@ public function testServiceWithServiceLocatorArgument()
$values = ['foo' => new Definition(\stdClass::class), 'bar' => new Definition(\stdClass::class)];
$this->assertEquals([new ServiceLocatorArgument($values)], $container->getDefinition('locator_dependent_inline_service')->getArguments());
}

public function testConfigBuilderEnvConfigurator()
{
$container = new ContainerBuilder();
$container->registerExtension(new \AcmeExtension());
$loader = new PhpFileLoader($container, new FileLocator(\dirname(__DIR__).'/Fixtures'), 'prod', new ConfigBuilderGenerator(sys_get_temp_dir()), true);
$loader->load('config/config_builder_env_configurator.php');

$this->assertIsString($container->getExtensionConfig('acme')[0]['color']);
}
}

0 comments on commit 68b1112

Please sign in to comment.