Salut,
Sans le point d'incrémentation pour définir le contenu des éléments du tableau, c'est beaucoup mieux car il n'y en a pas besoin, et on ne met pas de code inutile simplement parce que ça ne bug pas
Pour le reste je t'ai déjà montré la méthode à suivre. Combien de temps te faudra-t-il pour comprendre qu'
il faut distinguer le paramétrage des contrôles et l'affichage des erreurs ?
Exemple :
Validator::post(['title' => ['max'=>4,'min'=>2]]);
Validator::post(['toto' => ['min'=>5,'require'=>true]]);
echo Validator::afficheErreur();
$erreurs est un tableau propre à la classe. Son contenu s'incrémente donc pour chaque erreur trouvée à chaque appel de la méthode statique ::postTest. Et puisque tu concatène ce tableau plusieurs fois en faisant $this->erreur .= Validator... c'est normal que tu retrouve des doublons. La classe fonctionne correctement simplement tu l'utilise mal.
En d'autres termes quand tu fais "return self::getErreur();" (enlèves cette ligne, elle n'est pas exploitable) à la fin de la fonction "postTest" tu récupère les nouvelles erreurs + les anciennes. C'est pour cela qu'il faut séparer la configuration des contrôles par rapport à l'affichage du total des erreurs.
Quand je dis que le "return self::getErreur();" n'est pas exploitable dans la fonction "postTest" c'est que le tableau résultant est construit en fonction de l'ordre d'écriture des lignes dans ton code, il va retourner toutes les erreurs actuelles et anciennes mais pas les configurations d'input éventuellement écrites à la suite.
Cela te permet de voir au passage qu'il est important de faire des fonctions spécialisées pour chaque tache quand on fait de la poo. Là tu veux mélanger la configuration des contrôles et l'affichage des erreurs.
Si tu tiens absolument à faire des concaténations pour l'affichage alors il faut que tes fonctions retournent le message correspondant à la configuration testée mais pas le tableau de toutes les erreurs. Mais cela te fera un code finalement plus compliqué et pataud.
Ton idée de départ de faire un tableau était bonne, simplement tu ne savais pas l'exploiter
