Je n'ai pas lu tout le code, mais voici quelques suggestions pour la prochaine version:
- éliminer les propriétés statiques (ex
ici et
ici). L'utilisation de propriétés statiques dans ce contexte pose des problèmes de clarté de code, d'incertitude, de dépendance trop étroite et de manque de flexibilité. Il est préférable d'injecter explicitement les dépendances, et si besoin d'utiliser un service container/dependency injection container.
- Ce problème se pose par exemple concrètement
ici. Tu es obligé de tester entre le fichier de config prod et dev dans cette méthode. Du coup, la méthode a deux responsabilités (tester l'existence du fichier config et charger le fichier), alors qu'une méthode ne doit en avoir qu'une. De plus, la responsabilité de choisir le bon fichier ne devrait pas se trouver dans cette classe, mais laissée à l'utilisateur. En l'état, la classe ne permet pas de changer le type d'environnement sans modifier la classe elle-même, et puisque la valeur retournée est statique, on ne peux pas non plus utiliser deux environnements en même temps, alors que ce serait très pratique par exemple d'avoir deux contrôleurs, une dev et une prod.
Partager