87 public function validateInput(
string $input, mixed $value, array $inputRules): bool
91 if (isset($inputRules[
'required']) && $inputRules[
'required'] && empty($value) && $value !==
'0') {
92 $this->errors[$input][] =
"Le champ $input est obligatoire";
96 if (empty($value) && (!isset($inputRules[
'required']) || !$inputRules[
'required'])) {
100 foreach ($inputRules as $rule => $ruleValue) {
103 if ($ruleValue ===
'string' && !is_string($value)) {
104 $this->errors[$input][] =
"Doit être une chaîne de caractères";
106 } elseif ($ruleValue ===
'integer' && !filter_var($value, FILTER_VALIDATE_INT)) {
107 $this->errors[$input][] =
"Doit être un entier";
109 } elseif ($ruleValue ===
'numeric' && !is_numeric($value)) {
110 $this->errors[$input][] =
"Doit être un nombre";
115 if (is_string($ruleValue)) {
116 if ($ruleValue[0] !==
'/' && $ruleValue[-1] !==
'/') {
117 $ruleValue =
'/' . $ruleValue .
'/';
120 if (!preg_match($ruleValue, $value)) {
121 $this->errors[$input][] =
"Format invalide";
124 } elseif ($ruleValue === FILTER_VALIDATE_EMAIL && !filter_var($value, FILTER_VALIDATE_EMAIL)) {
125 $this->errors[$input][] =
"Adresse e-mail invalide";
127 } elseif ($ruleValue === FILTER_VALIDATE_URL && !filter_var($value, FILTER_VALIDATE_URL)) {
128 $this->errors[$input][] =
"URL invalide";
130 } elseif ($ruleValue === FILTER_VALIDATE_IP && !filter_var($value, FILTER_VALIDATE_IP)) {
131 $this->errors[$input][] =
"Adresse IP invalide";
136 if (strlen($value) < $ruleValue) {
137 $this->errors[$input][] =
"Doit contenir au moins $ruleValue caractères";
142 if (strlen($value) > $ruleValue) {
143 $this->errors[$input][] =
"Doit contenir au maximum $ruleValue caractères";
148 if (strlen($value) !== $ruleValue) {
149 $this->errors[$input][] =
"Doit contenir exactement $ruleValue caractères";
154 if ($value < $ruleValue) {
155 $this->errors[$input][] =
"Doit être supérieur à $ruleValue";
160 if ($value > $ruleValue) {
161 $this->errors[$input][] =
"Doit être inférieur à $ruleValue";