Comus Party 1.0.0
Application web de mini-jeux en ligne
Chargement...
Recherche...
Aucune correspondance
Validator.php
Aller à la documentation de ce fichier.
1<?php
9
10namespace ComusParty\App;
11
17{
31 private array $rules;
32
36 private array $errors;
37
42 public function __construct(array $rules)
43 {
44 $this->rules = $rules;
45 }
46
52 public function validate(array $datas): bool
53 {
54 $valid = true;
55 $this->errors = [];
56
57 foreach ($this->rules as $input => $inputRules) {
58 $value = $datas[$input] ?? null;
59
60 if (!$this->validateInput($input, $value, $inputRules)) {
61 $valid = false;
62 }
63 }
64
65 return $valid;
66 }
67
87 public function validateInput(string $input, mixed $value, array $inputRules): bool
88 {
89 $valid = true;
90
91 if (isset($inputRules['required']) && $inputRules['required'] && empty($value) && $value !== '0') {
92 $this->errors[$input][] = "Le champ $input est obligatoire";
93 return false;
94 }
95
96 if (empty($value) && (!isset($inputRules['required']) || !$inputRules['required'])) {
97 return true;
98 }
99
100 foreach ($inputRules as $rule => $ruleValue) {
101 switch ($rule) {
102 case 'type':
103 if ($ruleValue === 'string' && !is_string($value)) {
104 $this->errors[$input][] = "Doit être une chaîne de caractères";
105 $valid = false;
106 } elseif ($ruleValue === 'integer' && !filter_var($value, FILTER_VALIDATE_INT)) {
107 $this->errors[$input][] = "Doit être un entier";
108 $valid = false;
109 } elseif ($ruleValue === 'numeric' && !is_numeric($value)) {
110 $this->errors[$input][] = "Doit être un nombre";
111 $valid = false;
112 }
113 break;
114 case 'format':
115 if (is_string($ruleValue)) {
116 if ($ruleValue[0] !== '/' && $ruleValue[-1] !== '/') {
117 $ruleValue = '/' . $ruleValue . '/';
118 }
119
120 if (!preg_match($ruleValue, $value)) {
121 $this->errors[$input][] = "Format invalide";
122 $valid = false;
123 }
124 } elseif ($ruleValue === FILTER_VALIDATE_EMAIL && !filter_var($value, FILTER_VALIDATE_EMAIL)) {
125 $this->errors[$input][] = "Adresse e-mail invalide";
126 $valid = false;
127 } elseif ($ruleValue === FILTER_VALIDATE_URL && !filter_var($value, FILTER_VALIDATE_URL)) {
128 $this->errors[$input][] = "URL invalide";
129 $valid = false;
130 } elseif ($ruleValue === FILTER_VALIDATE_IP && !filter_var($value, FILTER_VALIDATE_IP)) {
131 $this->errors[$input][] = "Adresse IP invalide";
132 $valid = false;
133 }
134 break;
135 case 'min-length':
136 if (strlen($value) < $ruleValue) {
137 $this->errors[$input][] = "Doit contenir au moins $ruleValue caractères";
138 $valid = false;
139 }
140 break;
141 case 'max-length':
142 if (strlen($value) > $ruleValue) {
143 $this->errors[$input][] = "Doit contenir au maximum $ruleValue caractères";
144 $valid = false;
145 }
146 break;
147 case 'exact-length':
148 if (strlen($value) !== $ruleValue) {
149 $this->errors[$input][] = "Doit contenir exactement $ruleValue caractères";
150 $valid = false;
151 }
152 break;
153 case 'min-value':
154 if ($value < $ruleValue) {
155 $this->errors[$input][] = "Doit être supérieur à $ruleValue";
156 $valid = false;
157 }
158 break;
159 case 'max-value':
160 if ($value > $ruleValue) {
161 $this->errors[$input][] = "Doit être inférieur à $ruleValue";
162 $valid = false;
163 }
164 break;
165 }
166 }
167
168 return $valid;
169 }
170
175 public function getErrors(): array
176 {
177 return $this->errors;
178 }
179}
Classe Validator.
Definition Validator.php:17
validate(array $datas)
La méthode validate permet de valider les données reçues par les formulaires.
Definition Validator.php:52
getErrors()
Retourne les messages d'erreurs générés lors de la validation.
validateInput(string $input, mixed $value, array $inputRules)
Valide un champ spécifique en fonction de ses règles.
Definition Validator.php:87
__construct(array $rules)
Constructeur de la classe Validator.
Definition Validator.php:42