@@ -51,12 +51,22 @@ public function process(ContainerBuilder $container)
51
51
foreach ($ resolvingBag ->getEnvPlaceholders () + $ resolvingBag ->getUnusedEnvPlaceholders () as $ env => $ placeholders ) {
52
52
$ values = [];
53
53
if (false === $ i = strpos ($ env , ': ' )) {
54
- $ default = $ defaultBag ->has ("env( $ env) " ) ? $ defaultBag ->get ("env( $ env) " ) : self ::TYPE_FIXTURES ['string ' ];
55
- $ defaultType = null !== $ default ? get_debug_type ($ default ) : 'string ' ;
54
+ [$ default , $ defaultType ] = $ this ->getParameterDefaultAndDefaultType ("env( $ env) " , $ defaultBag );
56
55
$ values [$ defaultType ] = $ default ;
57
56
} else {
58
57
$ prefix = substr ($ env , 0 , $ i );
59
- foreach ($ envTypes [$ prefix ] ?? ['string ' ] as $ type ) {
58
+
59
+ if ('default ' === $ prefix ) {
60
+ [$ parameter , $ envVar ] = explode (': ' , substr ($ env , $ i + 1 ));
61
+ [$ defaultParameter , $ defaultParameterType ] = $ this ->getParameterDefaultAndDefaultType ($ parameter , $ defaultBag );
62
+ [$ defaultEnv , $ defaultEnvType ] = $ this ->getParameterDefaultAndDefaultType ("env( $ envVar) " , $ defaultBag );
63
+
64
+ $ types = array_unique ([$ defaultParameterType , $ defaultEnvType ]);
65
+ } else {
66
+ $ types = $ envTypes [$ prefix ] ?? ['string ' ];
67
+ }
68
+
69
+ foreach ($ types as $ type ) {
60
70
$ values [$ type ] = self ::TYPE_FIXTURES [$ type ] ?? null ;
61
71
}
62
72
}
@@ -100,4 +110,15 @@ public function getExtensionConfig(): array
100
110
$ this ->extensionConfig = [];
101
111
}
102
112
}
113
+
114
+ /**
115
+ * @return array{0: string, 1: string}
116
+ */
117
+ private function getParameterDefaultAndDefaultType (string $ name , ParameterBag $ defaultBag ): array
118
+ {
119
+ $ default = $ defaultBag ->has ($ name ) ? $ defaultBag ->get ($ name ) : self ::TYPE_FIXTURES ['string ' ];
120
+ $ defaultType = null !== $ default ? get_debug_type ($ default ) : 'string ' ;
121
+
122
+ return [$ default , $ defaultType ];
123
+ }
103
124
}
0 commit comments