protected function flattenArgs($args)
{
$result = array();
foreach ($args as $key => $value) {
if (is_object($value)) {
$result[$key] = array('object', get_class($value));
} elseif (is_array($value)) {
$result[$key] = array('array', $this->flattenArgs($value));
} elseif (null === $value) {
$result[$key] = array('null', null);
} elseif (is_bool($value)) {
$result[$key] = array('boolean', $value);
} elseif (is_resource($value)) {
$result[$key] = array('resource', '');
} else {
$result[$key] = array('string', (string) $value);
}
}
return $result;
}