Я знаю, какой тип переменной должен быть $value. Следует ли использовать is_numeric() для проверки, является ли это строкой с плавающей запятой?
private function sanitize($value, $type) {
switch($type) {
case 'boolean':
if (!is_bool($value)) $value=filter_var($value, FILTER_VALIDATE_BOOLEAN);
break;
case 'integer':
if (ctype_digit($value)) $value=(int)$value;
break;
case 'float':
if (is_numeric($value) && !is_float($value)) $value=(float)$value;
break;
//case 'string':case 'object':case 'array': //Not sanitized
}
return $value;
}
FILTER_VALIDATE_FLOAT?
@AlexHowansky Спасибо. Не по теме, но вы бы порекомендовали FILTER_VALIDATE_INT вместо ctype_digit()?
Я бы рекомендовал выбросить всю эту функцию и просто использовать filter_var() напрямую.
Вы имеете в виду, если это одновременно строка и поплавок?
@BobbyAxe что-то вроде '1234.567'.
@AlexHowansky Может быть, но FILTER_VALIDATE_BOOLEAN поставил меня в тупик, поскольку он возвращает FALSE после проверки действительного ложного значения.
FILTER_NULL_ON_FAILURE





Что вы имеете в виду под строкой с плавающей запятой? Либо это строка, либо поплавок.