2013-01-25 21 views
1

所以我知道依賴注入的基礎知識。我應該將我的依賴作爲方法參數傳入,而不是在方法內實例化對象。使用PHP構建類時的依賴注入

我想知道這是否也適用於PHP附帶的類,如DateTime對象或ReflectionClass對象?

例如,我正在處理的類中的一個方法需要知道傳入的對象的屬性。我想使用ReflectionClass來完成任務,但我認爲似乎沒有必要必須傳遞一個ReflectionClass對象作爲參數,如果該類始終可以訪問並且相對不變(除非ReflectionClass隨新版PHP版本發生變化)。

回答

0

這取決於您的應用程序的設計要求。

如果您知道您的應用程序需要某個特定方法的DateTime才能正常工作,那麼傳遞一個DateTime。如果你需要一個DateTime的自定義功能,那麼考慮對DateTime進行子分類併發送它。

如果您決定在方法簽名中使用PHP的類型提示,請考慮使用接口,以便發送的任何對象都將與接收類完成該合同。這種方法還可以幫助您將應用程序與未來PHP中的不兼容更改隔離開來。

+0

我喜歡你的界面想法。我將不得不進行調查,看看我是否可以爲我正在開展的項目實施類似的東西。 – maxiscool