20

我正在尝试用 PHP 编写 TDD 风格,而我最大的绊脚石之一(除了缺乏像样的 IDE)是我必须制作自己的 IoC 容器,才能正确注入所有模拟对象。

有人在 PHP 中使用过 Ioc 容器吗?我所能找到的只是一直烦人的 phpclasses.org 上的 PHP IOC,而且它似乎几乎没有文档,也没有太多的追随者。

4

7 回答 7

8

我玩过一些 PHP 的 DI 框架,但我没有在生产中使用过。有一些链接:

  1. http://www.stubbles.net/我认为这是我尝试过的最古老的
  2. http://php.xjconf.net/
  3. FLOW3 - 我相信这将成为一个非常好的框架(现在是测试版)

你提到你会将它用于 TDD - 所以也许看看Dependency Injection for Unit Tests in PHP

于 2008-09-09T15:41:47.413 回答
6

Phemto正在再次开发中,恕我直言,看起来很有希望。

您可能想要查看的其他一些类似项目:

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

picocontainer的php-port已经存在了很长时间。我认为它不再被积极开发,但另一方面,我相信它相当稳定。不过,我已经很久没有看它了。

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

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

于 2009-01-03T22:46:38.110 回答
3

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

于 2011-04-27T11:33:24.840 回答
3

Symfony 依赖注入或symfony 2.0 项目中的 PHP 5.3+ 等效组件怎么样。

于 2011-07-29T12:59:11.603 回答
2

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

它通过注解最小配置实现依赖注入,这里是一个例子:

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

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

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

于 2012-11-12T09:07:30.130 回答
1

在过去的六个月里,我一直在开发一个名为 Substrate 的PHP IoC/DI 容器。它仍然是一项正在进行中的工作,但它已经在生产中部署了一个半月,并且到目前为止运行良好。

Substrate 受到 Spring Framework 的启发,但在编写时考虑了 PHP 的优点和局限性。此时文档非常少,但有一些示例代码,包括单元测试示例。这是您认为可以用于 TDD 的东西吗?

于 2008-12-31T10:20:16.847 回答
0

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

于 2013-07-04T11:37:45.183 回答