From 9dc168fffc3629ee341c279879b55f9537c28cd2 Mon Sep 17 00:00:00 2001 From: Emmanuel Vella Date: Mon, 28 Nov 2011 17:24:16 +0100 Subject: [PATCH] Add recursive values normalization --- Transformer/ModelToElasticaAutoTransformer.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Transformer/ModelToElasticaAutoTransformer.php b/Transformer/ModelToElasticaAutoTransformer.php index 2fd378f..f41f7f6 100644 --- a/Transformer/ModelToElasticaAutoTransformer.php +++ b/Transformer/ModelToElasticaAutoTransformer.php @@ -61,24 +61,24 @@ class ModelToElasticaAutoTransformer implements ModelToElasticaTransformerInterf * Attempts to convert any type to a string or an array of strings * * @param mixed $value + * * @return string|array */ protected function normalizeValue($value) { - $normalizeValue = function($v) { - if (is_int($v) || is_float($v) || is_bool($v) || is_null($v)) { - return $v; - } elseif ($v instanceof \DateTime) { - return (int) $v->format("U"); - } else { - return (string) $v; + $normalizeValue = function(&$v) { + if ($v instanceof \DateTime) { + $v = (int) $v->format('U'); + } elseif (!is_int($v) && !is_float($v) && !is_bool($v) && !is_null($v)) { + $v = (string) $v; } }; if (is_array($value) || $value instanceof Traversable || $value instanceof ArrayAccess) { - $value = array_map($normalizeValue, is_array($value) ? $value : iterator_to_array($value)); + $value = is_array($value) ? $value : iterator_to_array($value); + array_walk_recursive($value, $normalizeValue); } else { - $value = $normalizeValue($value); + $normalizeValue($value); } return $value;