private function convert(array $params)
{
foreach ($params as $key => $value) {
$type = gettype($value);
if ($type === 'array') {
$params[$key] = $this->convert($value);
} elseif ($type === 'object') {
if ($value instanceof DateTime) {
$params[$key] = (object) ['xmlrpc_type' => 'datetime', 'scalar' => $value->format('Ymd\\TH:i:s'), 'timestamp' => $value->format('u')];
} elseif ($value instanceof Base64Interface) {
$params[$key] = (object) ['xmlrpc_type' => 'base64', 'scalar' => $value->getDecoded()];
} else {
$params[$key] = get_object_vars($value);
}
} elseif ($type === 'resource') {
throw SerializationException::invalidType($value);
}
}
return $params;
}