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
}
Guten Punkt, setzen Sie die Variablen auf einen Standardwert, wenn nicht festgelegt. PHP zu lange und ich vergesse, meine Variablen zu initialisieren ... –