2010-09-23 53 views
0

全部,依賴注入 - 必須將依賴關係作爲注入對象的類變量之一嗎?

我正在寫一個php的動態網站,並試圖使用依賴注入而不是全局。

在我的索引中,我創建了一個$view對象,其中包含要在UI中顯示的各種元素。在索引中,我還有一個switch($action){}結構,根據用戶在菜單上點擊哪個項目(因此值爲$action)來控制哪些控制器爲require。然後我在控制器上說出類似$view=execute($view)的內容。每個​​功能(每個控制器1個)以return $view;結尾。我的想法是,我可以在索引中保留一個包含在用戶會話期間生成的累積信息的對象$view

我的問題是:我需要使每個控制器的類變量爲$view嗎?我只想通過​​函數傳遞它,在函數內對其進行修改,並將其返回,修改。我不確定這是否仍然被認爲是依賴注入,或者使它成爲或不是對象傳遞到的類的類變量有什麼優點。

感謝,

JDelage

PS:有點更多的代碼,以幫助理解:

的index.php中:

require_once("Class_view.php"); // J'ai cree une classe separee pour la vue. 
$view=new $view; 
$view->addToViewArray("title", "projet JDelage"); 
(...) 
switch($action){ // Creates instances of the appropriate controller under the name $command 
(...) 
} 
$view=$command->execute($view) // Each execute() function of each controller takes $view as a parameter, modifies it, and returns it. 
+0

我失去了你在'$ view = execute($ view)'。你可能會張貼一些示例代碼來澄清你的問題嗎? – erisco 2010-09-23 16:03:39

回答

1

做我需要做$view每個控制器的類變量?我只想通過​​函數傳遞它,在函數內對其進行修改,並將其返回,修改。

不,如果僅處理它,則不必將其作爲類/實例變量。在這種情況下,它不屬於控制器的內部狀態,這是類/實例變量的用途。

我不知道這是否仍然被認爲是依賴注入,還是什麼都使得它的到的對象傳遞的優勢或不類的類變量。

是的,它仍然被認爲是Dependency Injection。 DI血腥簡單。你所要做的就是將依賴關係傳遞給一個對象。如何在對象內處理依賴關係並不重要。如果you ain't gonna need it將對象保存在另一個對象中,您將沒有任何優勢。事實上,這是一個缺點,因爲它增加了膨脹。

+0

謝謝Gordon,只是我看到的所有例子都有依賴類作爲類變量。 – JDelage 2010-09-23 16:09:02

+0

是的,這是常用的。但基本上,無論何時將某些東西注入某些需要使某些工作起作用的東西,它都稱爲依賴注入。 – Gordon 2010-09-23 16:17:00