シングルトンは悪いニュースです。
- プログラムにグローバル状態を導入します。ほとんどのプログラマーは、グローバル状態が悪い理由をよく知っている必要があります。
- シングルトンとそれを使用するクラスの間に密結合を導入します。これは、シングルトンも再利用せずに問題のクラスを再利用できないことを意味します。
- シングルトンをモックに簡単に置き換えることができないため、シングルトンに依存するクラスの単体テストが問題になります。
- クラスが独自の依存関係を解決しようとするコーディングスタイルを奨励します。これは、クラスが持つ依存関係に関する明確さを低下させる可能性があるため、悪いことです。
- PHPにはシェアードナッシングアーキテクチャがあります。つまり、PHPシングルトンは実際にはシングルトンではなく、一度に複数のインスタンスが存在する可能性があります(オープンリクエストごとに1つ)。
- 後日、シングルトンによって提供されているリソースが実際に複数必要であることに突然気付いた場合はどうなりますか?これは、あなたが思っているよりも一般的なシナリオです
依存性注入とタグ付けされた質問を表示 を見るとよいでしょう。 代わりに、上記の問題を解決します。