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 ?