Les célibataires sont de mauvaises nouvelles.
- Ils introduisent un état global dans un programme. La plupart des programmeurs devraient savoir pourquoi l'état global est mauvais.
- Ils introduisent un couplage étroit entre le singleton et toute classe qui l'utilise. Cela signifie que vous ne pouvez pas réutiliser les classes en question sans réutiliser également le singleton.
- Ils rendent problématiques les tests unitaires des classes qui dépendent du singleton, car vous ne pouvez pas facilement remplacer le singleton par un simulacre.
- Ils encouragent un style de codage dans lequel les classes tentent de résoudre leurs propres dépendances. C'est mauvais car cela peut réduire la clarté concernant les dépendances de la classe.
- PHP a une architecture sans partage, ce qui signifie que les singletons PHP ne sont pas vraiment des singletons, il peut y avoir plusieurs instances actives à la fois (une par requête ouverte).
- Que se passe-t-il si vous découvrez soudainement à une date ultérieure que vous avez en fait besoin de plusieurs des ressources fournies par le singleton ? C'est un scénario plus courant que vous ne le pensez
Vous feriez mieux de regarder dependency-injection au lieu de cela, car il résout les problèmes ci-dessus.