@@ -233,32 +233,44 @@ protected function resolveArgumentsInRuntime($requestedType, array $parameters,
233
233
{
234
234
$ resolvedArguments = [];
235
235
foreach ($ parameters as $ parameter ) {
236
- list ($ paramName , $ paramType , $ paramRequired , $ paramDefault , $ isVariadic ) = $ parameter ;
237
- $ argument = null ;
238
- if (!empty ($ arguments ) && (isset ($ arguments [$ paramName ]) || array_key_exists ($ paramName , $ arguments ))) {
239
- $ argument = $ arguments [$ paramName ];
240
- } elseif ($ paramRequired ) {
241
- if ($ paramType ) {
242
- $ argument = ['instance ' => $ paramType ];
243
- } else {
244
- $ this ->creationStack = [];
245
- throw new \BadMethodCallException (
246
- 'Missing required argument $ ' . $ paramName . ' of ' . $ requestedType . '. '
247
- );
248
- }
249
- } else {
250
- $ argument = $ paramDefault ;
251
- }
236
+ $ resolvedArguments [] = $ this ->getResolvedArgument ((string )$ requestedType , $ parameter , $ arguments );
237
+ }
252
238
253
- if ($ isVariadic && is_array ($ argument )) {
254
- $ resolvedArguments [] = $ argument ;
239
+ return empty ($ resolvedArguments ) ? [] : array_merge (...$ resolvedArguments );
240
+ }
241
+
242
+ /**
243
+ * Get resolved argument from parameter
244
+ *
245
+ * @param string $requestedType
246
+ * @param array $parameter
247
+ * @param array $arguments
248
+ * @return array
249
+ */
250
+ private function getResolvedArgument (string $ requestedType , array $ parameter , array $ arguments ): array
251
+ {
252
+ list ($ paramName , $ paramType , $ paramRequired , $ paramDefault , $ isVariadic ) = $ parameter ;
253
+ $ argument = null ;
254
+ if (!empty ($ arguments ) && (isset ($ arguments [$ paramName ]) || array_key_exists ($ paramName , $ arguments ))) {
255
+ $ argument = $ arguments [$ paramName ];
256
+ } elseif ($ paramRequired ) {
257
+ if ($ paramType ) {
258
+ $ argument = ['instance ' => $ paramType ];
255
259
} else {
256
- $ this ->resolveArgument ($ argument , $ paramType , $ paramDefault , $ paramName , $ requestedType );
257
- $ resolvedArguments [] = [$ argument ];
260
+ $ this ->creationStack = [];
261
+ throw new \BadMethodCallException (
262
+ 'Missing required argument $ ' . $ paramName . ' of ' . $ requestedType . '. '
263
+ );
258
264
}
265
+ } else {
266
+ $ argument = $ paramDefault ;
267
+ }
259
268
269
+ if ($ isVariadic ) {
270
+ return is_array ($ argument ) ? $ argument : [$ argument ];
260
271
}
261
272
262
- return empty ($ resolvedArguments ) ? [] : array_merge (...$ resolvedArguments );
273
+ $ this ->resolveArgument ($ argument , $ paramType , $ paramDefault , $ paramName , $ requestedType );
274
+ return [$ argument ];
263
275
}
264
276
}
0 commit comments