Ich denke, ich würde das in etwa so realisieren, wobei ich den Code nicht auf Funktionalität überprüft habe. So wäre mein prinzipieller Ablauf.
PHP-Code:
class Formular {
var $methode = false;
var $suchmuster = array('email' => '^.....$', ...);
var $fehlerliste = array('email' => 'Falsches E-Mail Format', ...);
var $fehler = array();
public function __constructor($methode) {
$methode = strtoupper($methode);
if(!in_array($methode, array('POST', 'GET')))
return false;
$this->methode = $_$methode;
}
public function neuesFeld($feldname, $typ) { // $typ muss identisch mit den Array-Keys aus $suchmuster und $fehlerliste sein
if(!$this->methode || !array_key_exists($typ, $this->suchmuster))
return false;
if(!preg_match('/$this->suchmuster[$typ]/', $this->methode[$feldname])) {
$this->fehler[] = $this->fehlerliste[$typ];
return false;
}
return true;
}
public function fehler_ausgabe() {
if(sizeof($this->fehler == 0))
return false;
return $this->fehler; // Daten sind dann weiter zu verarbeiten
}
}
// Aufruf:
$form = new Formular('POST');
$form->neuesFeld('email_adresse', 'email');
$form->neuesFeld('homepage', 'domain');
...
if($form->fehler_ausgabe()) {
$fehler_array = $form->fehler_ausgabe();
foreach($fehler_array as $fehler) {
echo $fehler . "<br />\n";
}
}
Ich hoffe, das hilft dir. Du könntest es natürlich noch erweitern, in dem du auch über eine Methode die Suchmuster nach dem Instanzieren der Klasse erst festlegst, je nach Formular, wie du es eben brauchst... Gibt noch diverse Erweiterungsmöglichkeiten...