diff --git a/lib/php-extension/src/ConstructableFromArrayTrait.php b/lib/php-extension/src/ConstructableFromArrayTrait.php index 8874d217..9cfc0fae 100644 --- a/lib/php-extension/src/ConstructableFromArrayTrait.php +++ b/lib/php-extension/src/ConstructableFromArrayTrait.php @@ -45,8 +45,10 @@ public static function fromArray(array $data) ); } - $argument = $data[$parameterName] ?? $reflectionParameter->getDefaultValue(); - if ($reflectionParameter->isVariadic() && \is_array($argument)) { + $class = $reflectionParameter->getClass(); + if ($class && ($className = $class->getName()) && class_exists($className)) { + $argumentList[] = new $className($argument); + } elseif ($reflectionParameter->isVariadic() && \is_array($argument)) { $argumentList = \array_merge($argumentList, $argument); } else { $argumentList[] = $argument;