题
我正在尝试用 PHP 编写 TDD 风格的代码,而我最大的障碍之一(除了缺乏像样的 IDE 之外)是我必须制作自己的 IoC 容器才能正确注入所有模拟对象。
有人用过 PHP 中的 Ioc 容器吗?我所能找到的就是 令人烦恼的 phpclasses.org 上的 PHP IOC 而且它似乎几乎没有文档,也没有太多后续内容。
解决方案
我使用过一些 PHP DI 框架,但还没有在生产中使用过。有一些链接:
- http://www.stubbles.net/ 我认为是我尝试过的最古老的
- http://php.xjconf.net/
- 流量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 是最好的选择