@@ -95,7 +95,18 @@ public function __construct(parent $parameterBag)
95
95
public function freezeAfterProcessing (Extension $ extension )
96
96
{
97
97
$ 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
+ }
99
110
}
100
111
101
112
/**
@@ -105,25 +116,4 @@ public function getEnvPlaceholders()
105
116
{
106
117
return null !== $ this ->processedEnvPlaceholders ? $ this ->processedEnvPlaceholders : parent ::getEnvPlaceholders ();
107
118
}
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
- }
129
119
}
0 commit comments