Следующая функция, которую я создал, заключается в хранении данных в базе данных с правильным типом.
У меня есть несколько вопросов:
- Имеет смысл превратить пустые строки вНОЛЬ.Есть ли последствия, которые я не рассматриваю?
- Что такое хорошее значение max_length для текста sqlite3.Я знаю, что ограничения размера BLOB-объектов и текста одинаковы, но есть ли другие соображения, такие как отображение данных в оболочке и т. Д.
- Существует ли простой способ проверить, являются ли данные изображением, и какой тип,так как MIME на этом этапе недоступен?
Что-то торчит, что мне не хватает?
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);
}