nonCleanDatas = $_POST; $this->validators = new Validator(); } public function addField($name, $rules, $fieldName, $database = []) { $this->addFields($name, $rules, [$fieldName], $database); } public function addFields($name, $rules, $fieldNames, $database = []) { $this->fields[] = ["name"=>$name, "rules"=>$rules, "fieldNames"=>$fieldNames, "database"=>$database]; } public function validate() { foreach ($this->fields as $field) { $this->validateField($field); $this->getDataFromField($field); } return (count($this->errors) == 0); } public function getField($field) { return $this->datas[$field]; } private function validateField($field) { $rules = $field["rules"]; if (count($rules) > 0) { foreach ($rules as $rule) { $this->applyValidation($rule, $field["name"], $this->nonCleanDatas, $field["fieldNames"], $field["database"]); } } } private function getDataFromField($field) { $fieldNames = $field["fieldNames"]; foreach ($fieldNames as $name) { $this->datas[$name] = $this->nonCleanDatas[$name]; } } private function applyValidation($rule, $name, $array, $keys, $database) { $error = call_user_func(array($this->validators, $rule), $name, $this->nonCleanDatas, $keys, $database); if ($error != null) { echo($error); $this->errors[] = $error; } } }