Le but du Singleton est de limiter les instances d'objet à une seule et de fournir un accès global.
Les deux sont des choses dont vous ne voulez pas ou dont vous n'avez pas besoin.
Limiter votre instance à une seule instance est plutôt inutile en PHP où cette restriction ne s'applique qu'aux instances du current demande. Si deux requêtes arrivent sur votre site de microblogging en même temps, il y aura toujours une instance chacune par requête. Si vous voulez vous assurer qu'il n'y a qu'une instance, n'instanciez simplement pas une deuxième instance.
L'accès global n'est pas non plus ce que vous voulez, car il rompt l'encapsulation. Si vous avez besoin d'une certaine instance dans vos objets, transmettez-la via injection de dépendance . C'est propre et maintenable. Il a l'avantage supplémentaire de vous permettre d'échanger facilement des dépendances avec d'autres implémentations, comme par exemple classes fictives pour vos tests unitaires .
Même Erich Gamma , l'un des inventeurs du pattern Singleton, remet aujourd'hui ce pattern en question :
Il vaut mieux éviter les Singletons.