Singletons jsou špatná zpráva.
- Zavádějí do programu globální stav. Většina programátorů by měla být obeznámena s tím, proč je globální stav špatný.
- Zavádějí těsné propojení mezi singletonem a jakoukoli třídou, která jej používá. To znamená, že nemůžete znovu použít příslušné třídy, aniž byste znovu použili singleton.
- Udělují problematické jednotkové testování tříd, které závisí na singletonu, protože singleton nelze snadno nahradit falešným.
- Podporují styl kódování, kde se třídy pokoušejí vyřešit své vlastní závislosti. To je špatné, protože to může snížit jasnost ohledně závislostí třídy.
- PHP má architekturu Share Nothing, což znamená, že PHP singletony nejsou ve skutečnosti singletony, může existovat více instancí v jednom okamžiku (jedna na otevřený požadavek).
- Co se stane, když najednou později zjistíte, že skutečně potřebujete více než jeden zdroj, který vám singleton poskytuje? Je to běžnější scénář, než byste si mysleli
Raději se podívejte na dependency-injection místo toho, protože řeší výše uvedené problémy.