Hatte leider noch nicht genügend Zeit das umzusetzen, aber schon einmal vielen Dank für die Antworten.
Hier mal meinen
ungetesteten Ansatz:
PHP-Code:
<?php
class FormValidator{
private $types = array(
"integer" => "isInteger",
"date" => "isDate",
"email" => "isEmail"
);
private $data, $rules;
function __construct($data, $rules){
$this->data =$data;
/*
$rules = array(
array("field" => "surname", "type" => "email")
);
*/
$this->rules =$rules;
}
public function validate(){
$formData = array();
$error = array();
$rules = $this->data;
$data = $this->rules;
foreach ($rules as $rule){
if(isset($data[$rule['field']])){
$functionName = $types[$rule['type']];
if(method_exists($this,$functionName)){
if($this->$functionName($data[$rule['field']])){
$formData[$rule['field']] = $data[$rule['field']];
}else{
$error[] = "ERROR: '" . $data[$rule['field']] . "'!";
}
}else{
$error[] = "Function '" . $types[$rule['type']] . "' does not exists!";
}
}else{
$error[] = "Field '" .$rule['field']. "' does not set!";
}
}
return array("error" =>$error, "data" => $formData );
}
/*Type Validation */
public function isInteger($val){
/*ToDo */
return true;
}
public function isDate($val){
/*ToDo */
return false;
}
public function isEmail($val){
/*ToDo */
return false;
}
}
//Aufruf
--HTML
<input type="email" name="email_name">
<input type="date" name="date_name">
--PHP
--Regeln definieren
$rules = array(
array("field" => "email_name", "type" => "email"),
array("field" => "date_name", "type" => "date")
);
$validator = new FormValidator ($_POST, $rules);
list($error, $_POST) = $validator->validate();
print_r($_POST);
print_r(error);