public static function classOfValue($value) { $className = ''; $type = gettype($value); if ($type == 'boolean') { $className = 'boolean'; } else { if ($type == 'integer') { $className = 'int'; } else { if ($type == 'double') { $className = 'double'; } else { if ($type == 'string') { $className = 'String'; } else { if ($type == 'array') { return ArrayType::autoClass($value); } else { if ($type == 'object') { if ($value instanceof Magic) { return new MagicClazz(get_class($value), $value); } else { $className = get_class($value); } } else { if ($type == 'resource') { throw new ClassNotFoundException('Resource have no class'); } else { if ($type == 'NULL') { $className = 'Void'; } else { throw new ClassNotFoundException('Type of value is unknown'); } } } } } } } } return self::classOf($className); }