2008-09-09 35 views
20

我想在PHP中編寫TDD風格,並且我最大的絆腳石之一(除了缺乏一個體面的IDE)是我必須讓自己的IoC容器一起黑客才能正確注入所有模擬對象。PHP的控制容器反轉?

有沒有人在php中使用Ioc容器?我所能找到的是PHP IOC on the ever-annoying phpclasses.org,它似乎幾乎沒有文檔,也沒有多少關注。

+0

看看我的PHP 5的依賴項注入項目:https://github.com/jamolkhon/Sharbat – Jamol 2011-10-06 12:26:23

+0

爲什麼這個問題關閉作爲off-話題?這是這幾天最重要的話題之一 – 2014-04-20 19:31:19

+0

我同意,問題是如果有的話,而不是建議(六年前問過)。但是,由於沒有「正確的」答案,我可以看到爲什麼它可以被視爲脫離主題。 – 2014-04-21 14:19:57

回答

1

過去六個月,我一直致力於PHP IoC/DI Container命名Substrate。它仍然是一個正在進行的工作,但它已經在deployed in production一個半月,到目前爲止工作得很好。

基材的靈感來自於Spring Framework,但是以PHP的優點和侷限性着稱。目前這個文檔是非常小的,但有一些sample code,包括一個單元測試的例子。這是你認爲你可以用於TDD的東西嗎?

6

Phemto正在重新開發,看起來相當有前途的恕我直言。

其他一些類似的項目,你可能想看看:

bucket(免責聲明:我這一次的主要作者)

的,已經有很長一段時間。我不認爲它正在積極地發展,但另一方面,我認爲它非常穩定。自從我看了很久以後,這已經很長時間了。

一個相當新的項目,我最近偶然發現的是Crafty。不知道有多少人使用它。

我也在看sphicy,看起來很有趣。

+0

Crafty的下載鏈接已中斷。我對作者說,他說它是一個死的項目,由於PHP反射API的變化,新版本的PHP破壞了它。 – 2010-03-26 16:23:51

3

您可能還想嘗試在Spring(tm)for Java之後建模的Ding(http://marcelog.github.com/Ding)。它是一個完整的控制和依賴注入容器的反轉,它也支持AOP

2

PHP-DI是另一個依賴注入容器。

設有依賴注入通過註釋最低配置,這裏有一個例子:

class Foo { 
    /** 
    * @Inject 
    * @var Bar 
    */ 
    private $bar; 
} 

它非常容易使用,它與Zend框架集成了例子。

(是的,我做這個框架工作)

0

Laravel 4擁有最好的IoC和DI框架。如果你不介意使用框架的Laravel 4是要走的路