cette propriété n'est pas alimentée
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:
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 ?