2016-05-10 13 views
0

Ich habe eine benutzerdefinierte Validator-Funktion, die verschiedene Eigenschaften einer übergebenen Variablen überprüft, einschließlich der Variablen isset(). Wenn die Variable jedoch nicht gesetzt ist, wird die Warnung ausgelöst, wenn ich die Validator-Funktion aufruft. Die Warnungen werden nicht angezeigt und das Skript läuft ohne Probleme, aber ich möchte nicht, dass mein Fehlerprotokoll mit all diesen Einträgen überladen wird.PHP - Benutzerdefinierte Validator-Funktion und Weitergabe von Unset-Variable

Die einfache Lösung ist, alle Aufrufe an die Funktion mit @, aber aus offensichtlichen Gründen lieber nicht. Alternativ könnte ich die isset() aus der Funktion entfernen (oder lassen Sie es, denke ich) und stattdessen die isset() überprüfen neben dem Funktionsaufruf.

Ich kann nicht sehen, dass dies die einzigen Optionen sind; Wie sonst kann ich die isset() innerhalb der Validator-Funktion durchführen, während verhindert wird, dass diese Warnungen protokolliert werden. Ich möchte immer noch nicht definierte Variablen Warnungen insgesamt protokolliert haben, nur nicht beim Aufruf dieser Funktion. Hier

ist die Funktion:

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

Hier ist ein Beispiel Aufruf:

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

Antwort

1

isset() und empty() sind spezielle Funktionen, die ohne Warnung nicht definierte Variablen akzeptieren. Sie können keine eigene Funktion erstellen, die dies akzeptiert.

Aber wenn Sie mit einer undefinierten Variable arbeiten, haben Sie wahrscheinlich andere Probleme zu bewältigen. Auch wenn es in PHP nicht benötigt wird, sollten alle Variablen initialisiert werden. Eine (schlechte) Problemumgehung könnte in etwa so aussehen:

+0

Guten Punkt, setzen Sie die Variablen auf einen Standardwert, wenn nicht festgelegt. PHP zu lange und ich vergesse, meine Variablen zu initialisieren ... –