From 0379e1153d6595b626593f6b363a00a3486d6efd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nil=20Portugu=C3=A9s=20Calder=C3=B3?= Date: Fri, 1 Jul 2016 00:39:16 +0200 Subject: [PATCH] Added serializedObjectToArray --- .../Helpers/RecursiveRenamerHelper.php | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/Transformer/Helpers/RecursiveRenamerHelper.php b/src/Transformer/Helpers/RecursiveRenamerHelper.php index f92588d..b989021 100644 --- a/src/Transformer/Helpers/RecursiveRenamerHelper.php +++ b/src/Transformer/Helpers/RecursiveRenamerHelper.php @@ -76,4 +76,33 @@ private static function renameMatchedClassKeys(array &$mappings, array &$array, } } } + + /** + * Transforms unmapped objects (Serializer::CLASS_IDENTIFIER_KEY) to arrays (Serializer::MAP_TYPE) + * + * @param array $array + * @param \NilPortugues\Api\Mapping\Mapping[] $mappings + * @return array + */ + public static function serializedObjectToArray(array &$array, array &$mappings) + { + foreach ($array as $key => &$value) { + if ($key === Serializer::CLASS_IDENTIFIER_KEY) { + $type = $array[Serializer::CLASS_IDENTIFIER_KEY]; + if (empty($mappings[$type])) { + unset($array[Serializer::CLASS_IDENTIFIER_KEY]); + } + } + + if (is_array($value)) { + foreach($value as $k => &$v) { + if (is_array($v)) { + $v = self::serializedObjectToArray($v, $mappings); + } + } + } + } + + return $array; + } }