From 995d189bb8c17cf72d1ff8f9eea87dca3f2b3e7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20J=2E=20Garc=C3=ADa=20Lagar?= Date: Thu, 9 May 2019 08:34:19 +0200 Subject: [PATCH] Fix denormalization of object with variadic constructor typed argument --- .../Serializer/Normalizer/AbstractNormalizer.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php index c5bd3ffd97202..a2603c86acf54 100644 --- a/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php +++ b/src/Symfony/Component/Serializer/Normalizer/AbstractNormalizer.php @@ -354,7 +354,14 @@ protected function instantiateObject(array &$data, $class, array &$context, \Ref throw new RuntimeException(sprintf('Cannot create an instance of %s from serialized data because the variadic parameter %s can only accept an array.', $class, $constructorParameter->name)); } - $params = array_merge($params, $data[$paramName]); + $variadicParameters = array_map( + function ($parameterData) use ($reflectionClass, $constructorParameter, $paramName, $context, $format) { + return $this->denormalizeParameter($reflectionClass, $constructorParameter, $paramName, $parameterData, $context, $format); + }, + $data[$paramName] + ); + + $params = array_merge($params, $variadicParameters); } } elseif ($allowed && !$ignored && (isset($data[$key]) || \array_key_exists($key, $data))) { $parameterData = $data[$key];