Bonjour,
j'ai une classe dont la responsabilité est de vérifier la validité des données qu'on lui passe. Une de ses propriétés est la chaîne (string) $errors. Dedans, on y inscrit toutes les erreurs (avec un séparateur (##) ). Mon souci est qu'à la fin, bien que des erreurs aient été détectées, donc écrites dans la propriété, celle-ci est vide. Donc l'écriture ne s'est pas faite.
Voici mon code, et merci de me dire comment le corriger :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 class Record { private $errors = ""; // la string des erreurs public $infos = ""; public $warnings = ""; private $data = []; // les données à analyser public function __construct( array $data, $str_errors, $str_infos) { $this->data = $data; $this->errors = $str_errors; $this->infos = $str_infos; } public function analyze(&$str_errors , &$str_warnings) { $ref_Application = new Application( $this->data['sesaid'], $this->data['applicationname'], $this->data['platform'], $this->data['platformowner'], $this->data['publisher']); if (!$ref_Application->isValid()) { $new_error = $ref_Application->errors(); foreach($new_error as $one_error) { $str_errors.= $one_error."##"; } } etc } public function hasErrors(): bool { return ! empty($this->errors); }
Je vous ai mis un exemple d'analyse des données (les données de la classe Application) ; si des erreurs ont été détectées, la string $str_errors est mise à jour. Cette variable étant passée par adresse à la méthode, son écriture restera visible quand on sort de la méthode. Le souci est que par contre, la propriété $errors n'est pas affectée. Quand plus tard, j'appelle la méthode hasErrors, celle-ci déclare qu'il n'y a pas d'erreur.
Comment faire pour que les écritures dans $str_errors soient répercutées dans la propriété $errors ?
Partager