59 lines
No EOL
1.7 KiB
PHP
59 lines
No EOL
1.7 KiB
PHP
<?php
|
|
|
|
class PostData {
|
|
public $errors = [];
|
|
public $datas = [];
|
|
|
|
private $fields = [];
|
|
private $nonCleanDatas;
|
|
private $validators;
|
|
|
|
public function __construct() {
|
|
$this->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;
|
|
}
|
|
}
|
|
} |