シングルトンパターンを使用するのは、通常コードの匂いです。シングルトンパターンはフレームワークコンテキストで話すときにはまだ悪いですか?
しかし、Laravelなどのフレームワークで「シングルトン」を使用することは、多くの問題に対する一般的な解決策であるようです。
それはLaravelでシングルトンは、次の意味で本当にシングルトンクラスと同じものではないことも注目に値します:
- シングルトンとして使用されているクラスは、こののに気付かない、何 がありませんそこには静的メソッドがありません。また、 がそのクラスの新しいインスタンスを手動で作成できないようなものはありません。
- Laravelシングルトンを使用している場合、コンテナはシングルトンとして使用する オブジェクトを追跡し、 要求時にこれらを手渡します。
Laravelではシングルトンと呼ばれるものが実際にシングルトンではなく、シングルトンパターンからインスピレーションを受けた実装であるため、実際のシングルトンは、いくつかの短所(テストするのが難しい、グローバルな状態...)を取り除くためです。
この質問は緩やかにthis question about design patterns in PHPに関連していますが、別の質問を作成するのが適切であるようです。
DIコンテナでシングルトンとして分離されているクラスをテストする際に問題はありません。あなたの実装は、彼らが受け取っているインスタンスを気にするべきではありません。 – Vercoutere