2016-05-10 1 views
0

J'ai une fonction de validation personnalisée qui vérifie les différentes propriétés d'une variable passée, y compris si la variable isset(). Toutefois, si la variable n'est pas définie, l'avertissement est lancé lorsque j'appelle la fonction de validation. Les avertissements ne sont pas affichés et le script fonctionne sans accroc, mais je ne veux pas que mon journal d'erreurs soit encombré de toutes ces entrées.PHP - Fonction de validation personnalisée et passage de variable non configurée

La solution facile est de préfixer tous les appels à la fonction avec @, mais je ne préfère pas pour des raisons évidentes. Sinon, je pourrais supprimer le isset() de la fonction (ou laissez-le je suppose) et placez à la place le isset() cocher à côté de l'appel de fonction.

Je ne vois pas ce sont les seules options; Sinon, comment puis-je effectuer le isset() dans la fonction de validation tout en empêchant ces avertissements d'être enregistrés. J'aimerais toujours que les alertes de variables non définies soient enregistrées globalement, mais pas lors de l'appel de cette fonction.

Voici la fonction:

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() 

Voici un exemple d'appel:

if(!$someClassName->validate_data($var, true, false, false, false, false)){ 
    //Do some stuff 
} 

Répondre

1

isset() et empty() sont des fonctions spéciales qui acceptent des variables non définies sans avertissement. Vous ne pouvez pas créer votre propre fonction qui accepte cela. Mais si vous travaillez avec une variable indéfinie, vous avez probablement d'autres problèmes à gérer. Même si cela n'est pas nécessaire en php, il est recommandé d'initialiser toutes les variables. Une (mauvaise) solution de contournement peut être quelque chose comme ceci:

+0

Bon point, il suffit de définir les variables à une valeur par défaut s'il n'est pas défini. PHP depuis trop longtemps et j'oublie d'initialiser mes variables ... –