Celem Singletona jest ograniczenie instancji obiektu do jednego i zapewnienie globalnego dostępu.
Oba są rzeczy, których nie chcesz ani nie potrzebujesz.
Ograniczanie instancji do jednej instancji jest raczej bezcelowe w PHP, gdzie to ograniczenie dotyczy tylko instancji w bieżącej wniosek. Jeśli dwa żądania trafią do Twojej witryny z mikroblogami w tym samym czasie, nadal będzie jedno wystąpienie na każde żądanie. Jeśli chcesz się upewnić, że istnieje tylko instancja, po prostu nie twórz instancji drugiej instancji.
Globalny dostęp też jest niczym, ponieważ łamie enkapsulację. Jeśli potrzebujesz określonej instancji wewnątrz swoich obiektów, przekaż ją przez wstrzykiwanie zależności . To jest czyste i łatwe w utrzymaniu. Dodatkową zaletą jest możliwość łatwej wymiany zależności z innymi implementacjami, takimi jak na przykład klasy pozorne dla Twoich testów jednostkowych .
Nawet Erich Gamma , jeden z wynalazców wzorca Singleton, kwestionuje ten wzorzec w dzisiejszych czasach:
Najlepiej unikać singli.