php gettype fix - PullRequest
       5

php gettype fix

1 голос
/ 16 июня 2011

Следующая функция, которую я создал, заключается в хранении данных в базе данных с правильным типом.

У меня есть несколько вопросов:

  1. Имеет смысл превратить пустые строки вНОЛЬ.Есть ли последствия, которые я не рассматриваю?
  2. Что такое хорошее значение max_length для текста sqlite3.Я знаю, что ограничения размера BLOB-объектов и текста одинаковы, но есть ли другие соображения, такие как отображение данных в оболочке и т. Д.
  3. Существует ли простой способ проверить, являются ли данные изображением, и какой тип,так как MIME на этом этапе недоступен?
  4. Что-то торчит, что мне не хватает?

    public static function getType($value, $max_length = 50){
    
        $type = gettype($value);
    
        if($type == 'NULL'
                || $type == 'boolean'
                || $type == 'integer'
                || $type == 'double'
                || $type == 'object'
                || $type == 'resource'
                || $type == 'array'
            )
            return array('type'=>$type,'value'=>$value);
    
        if($type == 'string' && empty($value))
            return array('type'=>'NULL','value'=>$value);
    
        if($type == 'string' && strlen($value) > $max_length)
            return array('type'=>'blob','value'=>$value);
    
        if($type == 'string' && substr($value, 0,1) === '0')
            return array('type'=>'string','value'=>$value);
    
        if($type == 'string' && is_numeric($value)){
            $int   = (int) $value;
            $float = (float) $value;
    
            if($int == $value){
                $value = $int;
                $type = 'integer';
            }elseif($float == $value){
                $value = $float;
                $type = 'double';
            }
        }elseif($type == 'string'){
            return array('type'=>$type,'value'=>$value);
        }else{
            $type = 'blob';
        }
        return array('type'=>$type,'value'=>$value);
    }
    
...