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

有人用过 PHP 中的 Ioc 容器吗?我所能找到的就是 令人烦恼的 phpclasses.org 上的 PHP IOC 而且它似乎几乎没有文档,也没有太多后续内容。

有帮助吗?

解决方案

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

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

您提到您会将其用于 TDD - 所以也许看看 PHP 单元测试的依赖注入

其他提示

菲姆托 正在再次开发,恕我直言,看起来很有前途。

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

(免责声明:我是这篇文章的主要作者)

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

我最近偶然发现的一个相当新的项目是 狡猾. 。但不确定有多少人使用它。

我也在看 辛辣的, ,这看起来很有趣。

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

关于 Symfony 依赖注入 或 PHP 5.3+ 同等版本 成分 来自 symfony 2.0 项目。

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

它的特点是通过依赖注入 注释最低配置, ,这是一个例子:

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

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

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

我一直在研究一个 PHP IoC/DI 容器 过去六个月被命名为 Substrate。它仍然是一项正在进行中的工作,但它已经 部署在生产中 一个半月了,到目前为止一直工作得很好。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top