Lo scopo di Singleton è limitare le istanze di oggetti a una e fornire un accesso globale.
Entrambe sono cose che non vuoi o non hai bisogno.
Limitare la tua istanza a un'istanza è piuttosto inutile in PHP dove questa restrizione si applica solo alle istanze nella corrente richiesta. Se due richieste colpiscono contemporaneamente il tuo sito di microblogging, ci sarà comunque un'istanza ciascuna per richiesta. Se vuoi assicurarti che ci sia solo un'istanza, semplicemente non istanziare una seconda istanza.
Anche l'accesso globale non è nulla che tu voglia, perché interrompe l'incapsulamento. Se hai bisogno di una certa istanza all'interno dei tuoi oggetti, passala tramite inserimento delle dipendenze . È pulito e manutenibile. Ha l'ulteriore vantaggio di consentire di scambiare facilmente dipendenze con altre implementazioni, come ad esempio classi fittizie per i tuoi unit test .
Anche Erich Gamma , uno degli inventori del modello Singleton, mette in dubbio questo modello al giorno d'oggi:
È meglio evitare i singleton.