<?php // Klasa z podstawowymi metodami walidacji class valid { public function required($value) { } public function alpha($value) { } } // Klasa do walidacji konkretnego formularza, w tym przypadku formularza logowania class user_valid extends valid { public function username_valid($value) { return false; } public function errors() { 'required' => 'Musisz podac nazwe uzytkownika', 'alpha' => 'Nazwa moze skladac sie jedynie ze znakow alfabetu', 'username_valid' => 'Test obiektow', ), 'not_sended' => 'Nie otrzymano hasla', 'required' => 'Musisz podac haslo', ), ); } } // Klasa validacji class validation { private $valid_object; public function __construct($post, $object_name) { $this->fields = $post; $this->valid_object = new $object_name; } public function add_rules($field_name, $rules) { } else { $this->rules[$field_name] = $rules; } } public function add_error($field_name, $error_name) { $this->errors[$field_name][] = $error_name; } else { } } public function validate() { foreach ($this->rules as $field_name => $rules) { foreach ($rules as $method) { if ($this->valid_object->$method($this->fields[$field_name]) === false) { $this->add_error($field_name, $method); } } else { $this->add_error($field_name, 'not_sended'); } } } } public function errors() { $errors_array = $this->valid_object->errors(); foreach ($this->errors as $field_name => $errors) { foreach ($errors as $error) { $output_errors[$field_name][] = $errors_array[$field_name][$error]; } else { } } } return $output_errors; } } // Obsluga 'username' => '123', ); $validation = new validation($post, 'user_valid'); if ($validation->validate()) { } else { foreach ($validation->errors() as $field_name => $errors) { foreach ($errors as $error) { } } }
Umiescilem wszystko w 1 pliku, aby bylo latwiej. Domyslnie klasy _valid beda w osobnym folderze