2008-09-25 19 views

回答

1

我發現this(點滴),但它看起來好像在幾年內沒有更新過。

0

我不認爲依賴注入框架將真正在PHP上工作,因爲它的結構是面向對象的程序。首先,它不像C#或Java,其中二進制文件已經存在,你只需要找到一種方法來實例化這個對象並將其注入到另一箇中。 PHP必須加載類文件並在它們使用它們之前解釋它們。所以如果你有PHP的深層繼承層次結構,我認爲這不是一個好主意。

鑑於PHP是一種腳本語言,最好將其作爲一種腳本語言。這意味着,我只是使用簡單的工廠或生成器方法來執行類似於依賴注入的操作。我不會用DI框架來增加負擔,只會增加PHP運行時必須爲每個Web請求處理的內容(除非您進行操作碼緩存,但仍然會有開銷,而Java平臺和Java平臺不會產生這些開銷。淨)。如果必須更改將被注入到對象中的對象或創建它們的方式,只需編輯包含工廠/構建器方法的腳本即可。無論如何,無需重新編譯。所以我具有靈活性,並且我有一個適合於PHP方式的輕量級架構。

2

大多數依賴注入框架使用反射來確定依賴關係。由於PHP4沒有提示,所以你不能這樣做。已經使用配置文件進行了實驗 - 有時嵌入了代碼中的註釋(通常稱爲註釋)。雖然這有效,但我覺得它有點笨重。在我看來,最好使用PHP的動態特性來獲得優勢,而不是嘗試將靜態類型的解決方案應用於它。你可以用手工製作工廠獲得很長的路要走。例如參見this post on how

+0

對於非類型語言(ColdSpring for ColdFusion,針對Ruby,針對PHP5的PicoContainer),有大量的DI框架。雖然這種模式在類型化的Java/.Net世界中「長大」,但它仍然用於無類型語言。 – 2008-09-25 14:33:52