Сингълтоните са лоша новина.
- Те въвеждат глобално състояние в програма. Повечето програмисти трябва да са запознати с това защо глобалното състояние е лошо.
- Те въвеждат тясна връзка между сингълтона и всеки клас, който го използва. Това означава, че не можете да използвате повторно въпросните класове, без да използвате повторно и сингълтона.
- Те правят единичното тестване на класове, които зависят от сингълтона, проблематично, защото не можете лесно да замените сингълтона с макет.
- Те насърчават стил на кодиране, при който класовете се опитват да разрешат собствените си зависимости. Това е лошо, защото може да намали яснотата относно това какви зависимости има класът.
- PHP има архитектура за споделяне на нищо, което означава, че PHP сингълтоните изобщо не са сингълтони, може да има няколко живи екземпляра по всяко време (по един на отворена заявка).
- Какво ще стане, ако внезапно откриете на по-късна дата, че всъщност имате нужда от повече от един ресурс, който се предоставя от сингълтона? Това е по-често срещан сценарий, отколкото си мислите
По-добре е да погледнете dependency-injection вместо това, тъй като решава горните проблеми.