diff --git a/src/Enum.php b/src/Enum.php index 33926fd..3ba6918 100644 --- a/src/Enum.php +++ b/src/Enum.php @@ -21,6 +21,7 @@ class Enum extends \yii\base\Object const TYPE_DATETIME = 'datetime'; const TYPE_STRING = 'string'; const TYPE_RESOURCE = 'resource'; + const TYPE_UNKNOWN = 'unknown'; /** * @@ -47,29 +48,29 @@ class Enum extends \yii\base\Object */ public static function getType( $var ) { - if (is_array($var)) { - return static::TYPE_ARRAY; - } elseif (is_object($var)) { - return "object"; - //return $var::className(); - } elseif (is_resource($var)) { - return 'resource'; - } elseif (is_null($var)) { - return static::TYPE_NULL; - } elseif (is_bool($var)) { - return static::TYPE_BOOL; - } elseif (is_float($var) || (is_numeric(str_replace(',', '', $var)) && strpos($var, '.') > 0 && - is_float((float)str_replace(',', '', $var))) - ) { - return static::TYPE_FLOAT; - } elseif (is_int($var) || (is_numeric($var) && is_int((int)$var))) { - return static::TYPE_INT; - } elseif (is_scalar($var) && strtotime($var) !== false) { - return static::TYPE_DATETIME; - } elseif (is_scalar($var)) { - return static::TYPE_STRING; + switch( $var ) { + case is_null( $var ): + return static::TYPE_NULL; + break; + case is_bool( $var ); + return static::TYPE_BOOL; + break; + case is_float( $var ): + case is_numeric( str_replace( ',', '', $var ) ) && strpos( $var, '.' ) > 0 && is_float( ( float )str_replace( ',', '', $var ) ): + return static::TYPE_FLOAT; + break; + case is_int( $var ) || ( is_numeric( $var ) && is_int( ( int )$var ) ): + return static::TYPE_INT; + break; + case is_scalar( $var ) && strtotime( $var ) !== false: + return static::TYPE_DATETIME; + break; + case is_scalar( $var ): + return static::TYPE_STRING; + break; + default: + return static::TYPE_UNKNOWN; } - return 'unknown'; } /**