2008-09-09 31 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是要走的路