Il vous est peut-être déjà arrivé de tomber sur cette ancienne erreur PHP lors de l’exécution d’un vieux projet :
Redefining already defined constructor for class ExampleClassLangage du code : JavaScript (javascript)
À l’origine, cette erreur apparaissait souvent dans du code prévu pour rester compatible avec plusieurs générations de PHP. Une classe contenait à la fois un constructeur moderne __construct() et un ancien constructeur portant le même nom que la classe.
En 2026, la bonne solution n’est plus d’intervertir deux méthodes pour satisfaire une vieille compatibilité. La bonne solution est de supprimer l’ancien constructeur et de ne garder que __construct().
Depuis PHP 8.0, une méthode qui porte le même nom que sa classe n’a plus de signification spéciale. Le manuel PHP précise que les anciens constructeurs nommés comme la classe n’étaient interprétés comme constructeurs que dans les classes du namespace global avant PHP 8.0. Depuis PHP 8.0, une méthode portant le même nom que la classe n’est plus traitée comme un constructeur. Voir la documentation PHP sur les constructeurs.
PHP 8.5 continue cette trajectoire de modernisation du langage. Donc, si votre objectif est de migrer vers PHP 8.5+, traitez cette erreur comme un signal clair : ce code doit être modernisé, pas simplement patché.