public function getTypeFromValue($value)
{
if (is_array($value)) {
if (empty($value) || array_keys($value) === range(0, count($value) - 1)) {
return self::TYPE_ARRAY;
}
return self::TYPE_OBJECT;
} elseif (is_object($value)) {
return self::TYPE_OBJECT;
} elseif (NULL === $value) {
return self::TYPE_NULL;
} elseif (is_bool($value)) {
return self::TYPE_BOOLEAN;
} elseif (is_int($value) || is_float($value)) {
return self::TYPE_NUMBER;
} else {
return self::TYPE_STRING;
}
}