私は依存性注入について読んできましたが、私はコンストラクタ注入とセッタ注入を含む概念をかなり理解していると思います。PHPでの依存性注入に関する問い合わせ
しかし、私は次のシナリオでどうなるのかわからない午前:
は、私は多くのメソッドを持つクラスを持っていると言うが、は一つだけこれらの方法の特定の他のオブジェクトが必要です。このオブジェクトをメソッドに提供するにはどうしたらいいですか?私はちょうど直接そのようなパラメータとしてメソッドにオブジェクトを渡すべきではありません:
class aClass
{
function aMethod(anotherClass $anotherClass)
{
anotherClass->hello();
}
function otherMethods()
{
}
.....
}
他のオプションは、不要と思われるクラス全体にそれを提供することです。
class aClass
{
protected $_anotherClass;
function aMethod()
{
anotherClass->hello();
}
function otherMethods()
{
}
.....
function setAnotherClass(anotherClass $anotherClass)
{
$this->_anotherClass;
}
}
私はメソッドにオブジェクトを渡す必要があるとき、私はコンストラクタ/セッターを経由して依存性注入を使用する必要がある場合:そうのような? これらの2つのオプションのどちらを使用するかについての経験則やベストプラクティスはありますか?事前にあなたの助けのための
感謝。
あなたの例がより具体的であれば、あなたの質問を理解しやすくなります。 'anotherClass'とは何ですか?また、メソッドはそれと何をしますか? – middus
さて、1つのシナリオ:私は電子商取引のウェブサイトにバスケットのクラスを持っています。このバスケットクラスのメソッドの1つはlistProducts()です。これは、製品のデータベーステーブルへのアクセスを必要とする唯一の方法です。これには、productsMapperという独自のデータマッパークラスがあります。 第2のシナリオ:save()メソッドを持つデータマッパークラスがあります。このメソッドは、行のモデルを必要とします。クラス全体にこのモデルを提供することは全く意味がありません。 – Dan
さて、私はこれを非常に直観的に見つけるので、ここでは具体的な答えです。最初のシナリオ:注射 - バスケットは少数のDB要求をするかもしれません。第2のシナリオ:パラメータでは、一度だけデータを保存する必要があり、同じオブジェクトの機能を使用して他のモデルを保存することができます。 – middus