Zitat von strub
Beitrag anzeigen
Zitat von Alf2016
Beitrag anzeigen
Aber schauen wir uns mal an welche Fallunterscheidungen bei Nutzung des sog. Affenformulars (Standardverfahren) zu treffen sind:
1. Formular noch nicht gesendet (Erstaufruf) -> Formular ausgeben
2. mindestens ein Element nicht vorhanden/fehlerhaft -> Formular nochmal mit Hinweisen ausgeben
3. Alle benötigten Elemente ok -> Verarbeitung der Eingaben
Eine validator-Klasse sollte diese Aufgaben maximal unterstützen. Die Inputs liegen als Array vor, das kann z.B. $_POST sein oder auch ganz woanders herkommen.
Die Filterbedingungen werden ähnlich wie in #9 angedeutet als Array übergeben.
PHP-Code:
$validate = new Validate;
$data = $validate->validateArray($input, $filter);
Bei Fehlern liefert validateArray() false und ein Aufruf von getErrorArray() liefert mir weitere Informationen (welcher Wert ist falsch, was ist falsch).
Einen Sonderfall stellt die Rückgabe von NULL bei einen leeren $Input dar. Dies zeigt an dass noch kein Input vorhanden ist und das Formular erstmal nur auszugeben ist.
Für die Filterdefinitionen haben meine Erfahrungen gezeigt das Ausdrücke wie "int|minVal:1|maxLen:3" praktisch so etwas wie eine eigene Sprache darstellen wo immer in der Doku nachgesehen werden muß.
Daher habe ich nur eine kleine Zahl sog. Standardfilter wie z.B. TIME:
PHP-Code:
$filter = [
'time' => 'TIME',
'date' => 'DATE',
"x5", FILTER_VALIDATE_FLOAT
];
Die Masse der Prüfungen wird durch annonyme Funktionen (Closure) oder Metoden einer Filterklasse realisiert. Dies mal angedeutet:
PHP-Code:
class userfilter{
public function modUnitAdr($value){
return is_numeric($value) AND $value >= 0 AND $value <= 250;
}
}
$validate = new Validate;
$v->setUserFilter(new userfilter);
$filter = [
'time' => 'TIME',
'date' => 'DATE',
"x5" => FILTER_VALIDATE_FLOAT,
"devadr" => 'modUnitAdr'
];
$data = $validate->validateArray($input, $filter);
Dies soll hier nur als Anregung dienen. Von den etwas fortgeschrittenen Nutzern hat da wohl jeder durch Erfahrungen sein eigenes Konzept.
LG jspit
Kommentar