PHP的控件容器的反转?

时间:2008-09-09 14:51:13

标签: php frameworks

我正在尝试在PHP中编写TDD样式,而我最大的绊脚石之一(除了缺乏一个像样的IDE)是因为我必须将我自己的黑客攻击IoC容器才能正确地注入我的所有模拟对象。 / p>

有人在PHP中使用过Ioc容器吗?我所能找到的只是PHP IOC on the ever-annoying phpclasses.org,它似乎几乎没有任何文档,也没有太多关注。

7 个答案:

答案 0 :(得分:7)

我使用了一些用于PHP的DI Frameworks,但我还没有在生产中使用过。有一些链接:

  1. http://www.stubbles.net/ 我认为是我试过的最年长的
  2. http://php.xjconf.net/
  3. FLOW3 - 我相信这一个会 成为一个非常好的框架(它的 现在测试版)
  4. 你提到你会将它用于TDD - 所以也许看看Dependency Injection for Unit Tests in PHP

答案 1 :(得分:6)

Phemto正在重新开发,看起来很有希望恕我直言。

您可能希望查看的其他一些类似项目:

bucket(免责声明:我是这个人的主要作者)

php-port of picocontainer已经存在了很长时间。我认为它不再被积极发展,但另一方面,我认为它非常稳定。我看了它已经很久了。

一个相当新的项目,我最近偶然发现是Crafty。不知道有多少人使用它。

我也在看sphicy,这看起来很有趣。

答案 2 :(得分:3)

您可能还想尝试使用Spring(tm)为Java建模的Ding(http://marcelog.github.com/Ding)。它是控制和依赖注入容器的完全反转,它也支持AOP

答案 3 :(得分:3)

symfony 2.0项目中的Symfony Dependency Injection或PHP 5.3+等效component怎么样。

答案 4 :(得分:2)

PHP-DI是另一个依赖注入容器。

它通过注释最小配置进行依赖注入,这是一个示例:

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

它非常易于使用,例如它与Zend Framework集成。

(是的,我确实在这个框架上工作)

答案 5 :(得分:1)

在过去的六个月里,我一直在研究PHP IoC/DI Container名为Substrate的人。它仍然是一项正在进行的工作,但它已经deployed in production一个半月,到目前为止一直运作良好。

Substrate的灵感来自Spring Framework,但是考虑到PHP的优势和局限性。此时的文档很少,但有一些sample code,包括一个单元测试示例。这是您认为可能用于TDD的东西吗?

答案 6 :(得分:0)

Laravel 4拥有最好的IoC和DI框架。如果您不介意使用框架,Laravel 4就是您的选择