我有一个自定义验证器函数,该函数检查传递的变量的不同属性,包括变量isset()。但是,如果未设置变量,则在调用验证器函数时会引发警告。警告不会显示,并且脚本运行顺利,但是我不希望我的错误日志被所有这些条目弄乱。

一种简单的解决方案是在函数的所有调用前面加上@,但我不希望出于明显的原因。或者,我可以从函数中删除isset()(或保留它,我想),而是将isset()检查放在函数调用旁边。

我看不到这些是唯一的选择。在阻止这些警告记录的同时,我还能如何在验证函数中执行isset()。我仍然希望整体记录 undefined variable 警告,而不是在调用此函数时。

这是函数:

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()是特殊功能,可以接受 undefined variable 而不会发出警告。您不能创建自己的函数来接受此功能。

但是,如果使用 undefined variable ,则可能还会遇到其他问题。即使在PHP中不需要,初始化所有变量也是一个好习惯。一个(不好的)解决方法可能是这样的:

if (!isset($var)) $var = null;

关于php - PHP-自定义验证器函数并传递未设置的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37141913/

10-09 01:03
查看更多