private function walkSerialize($object, &$retval, $normalizationMethod)
{
if ($object === null) {
return false;
}
foreach ($object as $k => $v) {
if ($v === null) {
$v = '';
}
$valueType = gettype($v);
$objectType = gettype($retval);
$normalizedString = call_user_func(array($this, $normalizationMethod), $k);
if (is_object($v) || is_array($v)) {
if ($objectType == 'object') {
if (is_array($v)) {
$retval->{$normalizedString} = array();
} else {
$retval->{$normalizedString} = new stdClass();
}
call_user_func_array(array($this, 'walkSerialize'), array($v, &$retval->{$normalizedString}, $normalizationMethod));
} else {
if (is_array($v)) {
$retval[$normalizedString] = array();
} else {
$retval[$normalizedString] = new stdClass();
}
call_user_func_array(array($this, 'walkSerialize'), array($v, &$retval[$normalizedString], $normalizationMethod));
}
} else {
if (is_object($retval)) {
$retval->{$normalizedString} = $v;
} else {
if (!is_int($k)) {
$retval[$normalizedString] = $v;
} else {
$retval[] = $v;
}
}
}
}
}