From dfb0c4baa5a7fd94f30ed4bca29d430a70d00003 Mon Sep 17 00:00:00 2001 From: Takamura Date: Thu, 5 Mar 2020 14:04:03 +1000 Subject: [PATCH] Update ConstructableFromArrayTrait.php Eliminates problems that arise when classes appear instead of simple parameter types --- lib/php-extension/src/ConstructableFromArrayTrait.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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;