O propósito do Singleton é limitar instâncias de objetos a uma e fornecer acesso global.
Ambas são coisas que você não quer ou precisa.
Limitar sua instância a uma instância é bastante inútil no PHP, onde essa restrição se aplica apenas às instâncias no atual solicitar. Se duas solicitações atingirem seu site de microblog ao mesmo tempo, ainda haverá uma instância cada uma por solicitação. Se você quiser ter certeza de que há apenas uma instância, simplesmente não instancie uma segunda instância.
O acesso global também não é o que você deseja, porque quebra o encapsulamento. Se você precisar de uma determinada instância dentro de seus objetos, passe-a via injeção de dependência . Isso é limpo e sustentável. Ele tem o benefício adicional de permitir que você troque facilmente dependências com outras implementações, como, por exemplo, classes simuladas a> para seus testes de unidade .
Mesmo Erich Gamma , um dos inventores do padrão Singleton, questiona esse padrão hoje em dia:
É melhor evitar Singletons.