diff --git a/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php b/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php index 3e4acf5664..853b1fd05e 100644 --- a/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php +++ b/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php @@ -95,7 +95,18 @@ class MergeExtensionConfigurationParameterBag extends EnvPlaceholderParameterBag public function freezeAfterProcessing(Extension $extension) { $this->processedEnvPlaceholders = array(); - $this->processMergedConfig($extension->getProcessedConfigs(), parent::getEnvPlaceholders()); + + // serialize config to catch env vars nested in object graphs + $config = serialize($extension->getProcessedConfigs()); + + foreach (parent::getEnvPlaceholders() as $env => $placeholders) { + foreach ($placeholders as $placeholder) { + if (false !== stripos($config, $placeholder)) { + $this->processedEnvPlaceholders[$env] = $placeholders; + break; + } + } + } } /** @@ -105,25 +116,4 @@ class MergeExtensionConfigurationParameterBag extends EnvPlaceholderParameterBag { return null !== $this->processedEnvPlaceholders ? $this->processedEnvPlaceholders : parent::getEnvPlaceholders(); } - - private function processMergedConfig($value, array $envPlaceholders) - { - if (is_array($value)) { - foreach ($value as $k => $v) { - $this->processMergedConfig($k, $envPlaceholders); - $this->processMergedConfig($v, $envPlaceholders); - } - } elseif (is_string($value)) { - foreach ($envPlaceholders as $env => $placeholders) { - foreach ($placeholders as $placeholder) { - if (false !== stripos($value, $placeholder)) { - $this->processedEnvPlaceholders[$env] = $placeholders; - break; - } - } - } - } - - return $value; - } } diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/MergeExtensionConfigurationPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/MergeExtensionConfigurationPassTest.php index 033e6c00fc..44d1933a80 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/MergeExtensionConfigurationPassTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/MergeExtensionConfigurationPassTest.php @@ -81,7 +81,7 @@ class MergeExtensionConfigurationPassTest extends TestCase $pass = new MergeExtensionConfigurationPass(); $pass->process($container); - $this->assertSame(array('FOO', 'BAZ'), array_keys($container->getParameterBag()->getEnvPlaceholders())); + $this->assertSame(array('BAZ', 'FOO'), array_keys($container->getParameterBag()->getEnvPlaceholders())); $this->assertSame(array('BAZ' => 1, 'FOO' => 0), $container->getEnvCounters()); } }