Hallo timi,die PHPDoc-Kommentare gefallen mir sehr gut. Ich verwende sie auch in größeren Projekten. Da die Klasse aus nur drei Funktionen besteht, habe ich mir absichtlich nicht die Mühe gemacht, den Code zu kommentieren.Deine Methode ist auch gut. Ich wollte meine Klasse ähnlich aufbauen, habe mich anschließend doch aus Performancegründen (jede Datei enthält eine Klasse, die includiert werden muss) dagegen entschieden.Anmerkung: Ich würde an deiner Stelle einen Unterordner erstellen, in welchem sich die Plugins befinden. Man kann schlecht unterscheiden, was von den Dateien zur Validierungsklasse gehört und was ein "Plugin" ist. Nicht immer werden alle Plugins benötigt. Jedes Plugin zu inkludieren kostet Zeit. Besser wäre es, in formvalidation.inc.php an eine Funktion einen Array mit allen benötigten Plugins übergeben. Am besten wäre es, wenn check() automatisch erkennen würde, welches Plugin benötigt wird. Das ist leider nicht möglich, weil du requireField() als zweiten Parameter ein Objekt übergibst. Die Parameter der Klassenaufrufe sind ja nicht immer gleich, also wäre eine leichtere Möglichkeit auf Klassen als Plugins zu verzichten und einen Array als zweiten Parameter zu übergeben. Der Array enthält folgendes:Element #0: Validierungsmethode (z. B. RULE_FIELD_FILLED)Element #1: Parameter 1Element #2: Parameter 2 (optional)Element #3: Parameter 3 (optional)...Die Validierungsmethoden sind Konstanten, deren Werte die Funktionsnamen sind.Ich würde ein Plugin wie folgt aufbauen:<?php//Dateiname: plugins/fieldUsername.class.php//Es werden keine Klassen verwendet, um die Funktion über call_user_func() aufzurufen.function checkFieldFilled($fieldContent){ $fieldContent = trim($fieldContent); return preg_match('/^[a-zA-Z0-9_]+$/', $fieldContent);}?>Eigene Validierungsmethoden fügt man über addRule() hinzu. Der erste Parameter enthält einen Namen, der später als Konstante verwendet wird (z. B. RULE_FIELD_FILLED). Der zweite Parameter ist der Funktionsname.function addRule($name, $funcName){ define($name, $funcName);}So würde ich mir die Klasse vorstellen:<?php require_once('formValidation.class.php'); $pruefung = new formValidation('kontaktformular'); $pruefung->requireField("Nachname", array(RULE_FIELD_FILLED), "Bitte geben Sie einen Nachnamen ein."); $pruefung->requireField("Nachname", array(RULE_FIELD_LENGTH, 20, 0), "Ihr Nachname ist zu lang."); //eigene Funktion hinzufügen function checkEMail() { //... } $pruefung->addRule('RULE_CHECK_EMAIL', 'checkEMail'); //deklariert RULE_CHECK_EMAIL $pruefung->requireField("EMail", array(RULE_CHECK_EMAIL), "Bitte geben Sie eine gülte E-Mail Adresse ein."); //check() durchläuft z. B. über foreach() das Array. Für jede Iteration wird call_user_func_array() mit dem Funktionsnamen aufgerufen //(2. Parameter, 1. Element von requireField()) und als ersten Parameter den Feldwert und als zweiten, dritten, usw. Parameter werden //die restlichen Elemente von dem 2. Parameter von requireField() verwendet (also das Array mit den Rules). if ($pruefung->check()) { ... } else { ... }?>Ich würde dir empfehlen, so viel Singlequotes, wie möglich zu verwenden (Doublequotes sind langsamer). Du verwendest in deinen Codes oft HTML Elemente. Es wäre sinnvoller, diese nicht "hardcoded" zu schreiben, sondern bspw. als Konstante zu definieren (Standardwert), dessen Inhalt verwendet wird, wenn über kein benutzerdefinierter Wert (z. B. über eine Funktion) gesetzt worden ist. Ich verwende absichtlich nicht $_GET, $_POST, $_REQUEST, $_COOKIE, etc. in allen meiner Klassen, weil, wie in deinem Fall, man eigene Arrays hätte überprüfen wollen. $_GET, $_POST, $_REQUEST, usw. funktionieren nicht, wenn man das PHP Script als Commandline Anwendung geschrieben hat.GrußTim