10000 [DI] Fix tracking env var placeholders nested in object graphs · symfony/symfony@a8397cf · GitHub
[go: up one dir, main page]

Skip to content

Commit a8397cf

Browse files
[DI] Fix tracking env var placeholders nested in object graphs
1 parent 0b46166 commit a8397cf

File tree

2 files changed

+13
-23
lines changed

2 files changed

+13
-23
lines changed

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

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,18 @@ public function __construct(parent $parameterBag)
9595
public function freezeAfterProcessing(Extension $extension)
9696
{
9797
$this->processedEnvPlaceholders = array();
98-
$this->processMergedConfig($extension->getProcessedConfigs(), parent::getEnvPlaceholders());
98+
99+
// serialize config to catch env vars nested in object graphs
100+
$config = serialize($extension->getProcessedConfigs());
101+
102+
foreach (parent::getEnvPlaceholders() as $env => $placeholders) {
103+
foreach ($placeholders as $placeholder) {
104+
if (false !== stripos($config, $placeholder)) {
105+
$this->processedEnvPlaceholders[$env] = $placeholders;
106+
break;
107+
}
108+
}
109+
}
99110
}
100111

101112
/**
@@ -105,25 +116,4 @@ public function getEnvPlaceholders()
105116
{
106117
return null !== $this->processedEnvPlaceholders ? $this->processedEnvPlaceholders : parent::getEnvPlaceholders();
107118
}
108-
109-
private function processMergedConfig($value, array $envPlaceholders)
110-
{
111-
if (is_array($value)) {
112-
foreach ($value as $k => $v) {
113-
$this->processMergedConfig($k, $envPlaceholders);
114-
$this->processMergedConfig($v, $envPlaceholders);
115-
}
116-
} elseif (is_string($value)) {
117-
foreach ($envPlaceholders as $env => $placeholders) {
118-
foreach ($placeholders as $placeholder) {
119-
if (false !== stripos($value, $placeholder)) {
120-
$this->processedEnvPlaceholders[$env] = $placeholders;
121-
break;
122-
}
123-
}
124-
}
125-
}
126-
127-
return $value;
128-
}
129119
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public function testOverriddenEnvsAreMerged()
8181
$pass = new MergeExtensionConfigurationPass();
8282
$pass->process($container);
8383

84-
$this->assertSame(array('FOO', 'BAZ'), array_keys($container->getParameterBag()->getEnvPlaceholders()));
84+
$this->assertSame(array('BAZ', 'FOO'), array_keys($container->getParameterBag()->getEnvPlaceholders()));
8585
$this->assertSame(array('BAZ' => 1, 'FOO' => 0), $container->getEnvCounters());
8686
}
8787
}

0 commit comments

Comments
 (0)
0