Skip to content

Commit 3cee7a6

Browse files
committed
[DI] Register default env var provided types
1 parent d43daa0 commit 3cee7a6

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

src/Symfony/Component/DependencyInjection/Compiler/RegisterEnvVarProcessorsPass.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument;
1515
use Symfony\Component\DependencyInjection\ContainerBuilder;
16+
use Symfony\Component\DependencyInjection\EnvVarProcessor;
1617
use Symfony\Component\DependencyInjection\EnvVarProcessorInterface;
1718
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
1819
use Symfony\Component\DependencyInjection\ParameterBag\EnvPlaceholderParameterBag;
@@ -45,10 +46,16 @@ public function process(ContainerBuilder $container)
4546
}
4647
}
4748

48-
if ($processors) {
49-
if ($bag instanceof EnvPlaceholderParameterBag) {
50-
$bag->setProvidedTypes($types);
49+
if ($bag instanceof EnvPlaceholderParameterBag) {
50+
foreach (EnvVarProcessor::getProvidedTypes() as $prefix => $type) {
51+
if (!isset($types[$prefix])) {
52+
$types[$prefix] = self::validateProvidedTypes($type, EnvVarProcessor::class);
53+
}
5154
}
55+
$bag->setProvidedTypes($types);
56+
}
57+
58+
if ($processors) {
5259
$container->register('container.env_var_processors_locator', ServiceLocator::class)
5360
->setPublic(true)
5461
->setArguments(array($processors))

src/Symfony/Component/DependencyInjection/Tests/Compiler/RegisterEnvVarProcessorsPassTest.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,20 @@ public function testSimpleProcessor()
2828
$this->assertTrue($container->has('container.env_var_processors_locator'));
2929
$this->assertInstanceof(SimpleProcessor::class, $container->get('container.env_var_processors_locator')->get('foo'));
3030

31-
$this->assertSame(array('foo' => array('string')), $container->getParameterBag()->getProvidedTypes());
31+
$expected = array(
32+
'foo' => array('string'),
33+
'base64' => array('string'),
34+
'bool' => array('bool'),
35+
'const' => array('bool', 'int', 'float', 'string', 'array'),
36+
'file' => array('string'),
37+
'float' => array('float'),
38+
'int' => array('int'),
39+
'json' => array('array'),
40+
'resolve' => array('string'),
41+
'string' => array('string'),
42+
);
43+
44+
$this->assertSame($expected, $container->getParameterBag()->getProvidedTypes());
3245
}
3346

3447
public function testNoProcessor()

0 commit comments

Comments
 (0)