Ja bym postulował napisanie klasy walidacji. ógłbyś przepisywać powoli kod na obiektówkę, ale jeśli chcesz się dalej trzymać strukturalnego to nie widze problemu. Mogło by być coś w stylu:
- zmienna odpowiadająca za powodzenie walidacji,
- tablica pól z przypisanymi warunkami walidacji,
- ewentualnie tablica z wiadomościami walidatora.
Przykład podam w postaci malutkiej klasy, której pozbawię części funkcjonalności, żebyś za łatwo nie miał

class Validator {
protected $valid;
protected $rules;
protected $messages;
protected $errors;
public function __construct() {
$this->valid = TRUE;
$this->messages = array(); }
public function isValid() {
return $this->valid;
}
public function add_constraint
($field_name, $constraint, $additional_parameters = array(), $optional_message = '' ) { $this->rules[$field_name][$constraint] = $additional_parameters;
$this->messages[$field_name][$constraint] = $optional_message;
return $this;
}
public function remove_constraint($field_name = NULL, $constraint = NULL) {
foreach($this->rules AS $field => $rules) {
if(NULL === $constraint) {
if(NULL === $field_name) {
$this->rules = array(); //kasuje wszystkie reguły we wszystkich polach } else {
if( in_array($field_name, $this->rules) ) { $this->rules[$field_name] = array(); // kasuj wszystkie reguły pola; } //jako else możesz rzucić wyjątek o nie istnieniu danego pola
}
} else {
if(NULL === $field_name) {
foreach($this->rules AS $field => $rules) {
unset( $this->rules[$field][$constraint] ); // kasuje regułę we wszystkich polach }
}
} else {
// kasuj regułę w określonym polu, ale ten warunek zostawiam Tobie już jesli Ci pasuje podejście
}
}
}
return $this;
}
public function validate
($form_fields_array = array() ) { foreach($form_fields_array AS $field => $value) {
foreach($this->rules[$field] AS $key => $params) {
$return = call_user_func
($this->$key, $value, extract($params) ); // tu sobie pozabezpieczać trzeba if(FALSE === $return) {
$this->valid = FALSE;
$this->errors[$field][] = $this->messages[$field][$key];
}
}
}
}
return $this;
}
// przykładowa funkcja sprawdzająca czy wymagane pole jest niepuste
protected function required($value) {
return empty($value) ?
FALSE : TRUE; }
}
Tu można naprawdę dużo pokombinować i to bardziej to szkic. Można przykładowo obiekt formularza przekazać do konstruktora już na starcie, co nam ładnie strukturkę stworzy, można mieć jakiś pakiet reguł standardowych wraz z ich komunikatami błędów, można pomyslec o możliwości podawania nie tylko reguł klasy Validator, ale także user defined czy wbudowanych PHP.