@@ -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}
0 commit comments