dragon-forks/kernel/postdata.php
2025-04-11 18:48:20 +02:00

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;
}
}
}