我一直在閱讀依賴注入,我想我非常理解概念,包括構造函數注入和setter注入。有關依賴關係的查詢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;
}
}
何時應該傳遞一個對象的方法和什麼時候應該經由構造/ setter方法使用依賴注入? 有什麼經驗法則或什麼時候使用這兩個選項之一的最佳做法?
感謝您的幫助提前。
如果你的例子更具體一些,那麼解決你的問題會更容易。什麼是'anotherClass',aMethod用它做什麼? – middus
好的,一個場景:我在我的電子商務網站上有一個Basket類。這個Basket類中的一個方法叫做listProducts()。這是需要訪問產品數據庫表的唯一方法。這有它自己的數據映射器類叫做productsMapper。 第二個場景:我有一個save()方法的數據映射器類。此方法需要該行的模型。將這種模式提供給整個班級是毫無意義的。 – Dan
好的,我非常直觀地發現這一點,所以在這裏有具體的答案。第一種情況:注入 - 籃子可能會提出幾個DB請求。第二種情況:參數,您只需要一次數據來存儲,並可能需要使用同一對象的函數來存儲其他模型。 – middus