PHP - 自定义验证器函数并传递未设置的变量
PHP - Custom validator function and passing unset variable
我有一个自定义验证器函数,它检查传递变量的不同属性,包括变量是否 isset()
。但是,如果未设置变量,则在调用验证器函数时会抛出警告。不显示警告并且脚本运行顺利,但我不希望我的错误日志被所有这些条目弄得乱七八糟。
简单的解决方案是在函数的所有调用前加上 @
,但出于显而易见的原因我宁愿不这样做。或者,我可以从函数中删除 isset()
(或者我猜是保留它),而是将 isset()
检查放在函数调用旁边。
我认为这些不是唯一的选择;在防止记录这些警告的同时,我还能如何在验证器函数中执行 isset()
。我仍然希望整体记录未定义的变量警告,只是在调用此函数时没有。
函数如下:
function validate_data($value, $required = false, $min = false, $max = false, $numeric = false, $email = false){
if($required === true && (!isset($value) || strlen(trim($value)) < 1) ){
return false;
}
if($min !== false && strlen(trim($value)) < $min){
return false;
}
if($max !== false && strlen(trim($value)) > $max){
return false;
}
if(strlen(trim($value)) > 0 && $numeric === true && (!is_numeric(trim($value)))){
return false;
}
if(strlen(trim($value)) > 0 && $email === true && !filter_var(trim($value), FILTER_VALIDATE_EMAIL)){
return false;
}
return true;
}//validate_data()
调用示例如下:
if(!$someClassName->validate_data($var, true, false, false, false, false)){
//Do some stuff
}
isset()
和 empty()
是特殊函数,可以在没有警告的情况下接受未定义的变量。您不能创建自己的接受此函数的函数。
但是如果您使用未定义的变量,您可能还有其他问题需要处理。即使在 php 中不需要,也最好初始化所有变量。一个(不好的)解决方法可能是这样的:
if (!isset($var)) $var = null;
我有一个自定义验证器函数,它检查传递变量的不同属性,包括变量是否 isset()
。但是,如果未设置变量,则在调用验证器函数时会抛出警告。不显示警告并且脚本运行顺利,但我不希望我的错误日志被所有这些条目弄得乱七八糟。
简单的解决方案是在函数的所有调用前加上 @
,但出于显而易见的原因我宁愿不这样做。或者,我可以从函数中删除 isset()
(或者我猜是保留它),而是将 isset()
检查放在函数调用旁边。
我认为这些不是唯一的选择;在防止记录这些警告的同时,我还能如何在验证器函数中执行 isset()
。我仍然希望整体记录未定义的变量警告,只是在调用此函数时没有。
函数如下:
function validate_data($value, $required = false, $min = false, $max = false, $numeric = false, $email = false){
if($required === true && (!isset($value) || strlen(trim($value)) < 1) ){
return false;
}
if($min !== false && strlen(trim($value)) < $min){
return false;
}
if($max !== false && strlen(trim($value)) > $max){
return false;
}
if(strlen(trim($value)) > 0 && $numeric === true && (!is_numeric(trim($value)))){
return false;
}
if(strlen(trim($value)) > 0 && $email === true && !filter_var(trim($value), FILTER_VALIDATE_EMAIL)){
return false;
}
return true;
}//validate_data()
调用示例如下:
if(!$someClassName->validate_data($var, true, false, false, false, false)){
//Do some stuff
}
isset()
和 empty()
是特殊函数,可以在没有警告的情况下接受未定义的变量。您不能创建自己的接受此函数的函数。
但是如果您使用未定义的变量,您可能还有其他问题需要处理。即使在 php 中不需要,也最好初始化所有变量。一个(不好的)解决方法可能是这样的:
if (!isset($var)) $var = null;