1

私は PHP でコーディングされた Web サイトに取り組んでおり、Dependency Injectionについて読んでいます。ただし、この種の状況に対する理由はわかりません。

現在、2 つのグローバル変数 (1 つは DB 接続であり、もう 1 つは DB からプルされた現在のユーザーのデータを格納するもの) を持つスクリプトがあります。これら 2 つのグローバル変数は、1 つまたは 2 つのクラスを除くすべてのクラスで使用されます。DI を使用してこれらのグローバル オブジェクトを実装するという考えは、実際の見返りがないのに、余分な入力を大量に行うように思えます。これらの注入された依存関係を保持するための最大 2 つの追加属性とともに、ほとんどのクラスに渡される最大 2 つの追加引数。

グローバルをやり直す必要がないという言い訳が欲しいので、これを尋ねているのではありません。本当に知りたいので、これを尋ねています:

スクリプト内のほぼすべてのオブジェクトで少量のオブジェクトが使用されている場合、それらのオブジェクトをグローバルにしても問題ないでしょうか? この場合、グローバルよりも DI を使用する利点は何でしょうか?

4

1 に答える 1

0

あなたのタイトルに答えるには: 1 つまたは 2 つのグローバルを使用しても問題ありませんか? 、いいえと答えます。DI を使用する場合は、どこでも使用できます。あなたが遭遇する困難は普通ですが、あなたはそれらを克服することができます.

グローバル変数 (またはシングルトン) から DI に切り替えるには、アプリケーションのアーキテクチャを再考する必要があります。

以前は、グローバル$db変数と、それを使用する多くのクラスがありました。

単純に依存性注入を使用$dbしてすべてに注入する場合、それは大変な作業です。

containerを使用することをお勧めします。その仕事は、依存関係が注入されるようにオブジェクトを構築することです (そして、どこでも自分で行う必要はありません)。

しかし、次の「進化」は、コンテナーからすべてのオブジェクトを取得する必要があるということです (すべての依存関係が注入されるように)。

問題は、それだけの価値があるかどうかです。判断は任せますが、DI は「より優れた」アプリケーション (より保守しやすく、テストしやすいなど) を構築するのに役立ちますが、それはあなたが求めているものですか?

于 2013-10-21T09:58:10.597 に答える