我正在尝试用 PHP 编写 TDD 风格,而我最大的绊脚石之一(除了缺乏像样的 IDE)是我必须制作自己的 IoC 容器,才能正确注入所有模拟对象。
有人在 PHP 中使用过 Ioc 容器吗?我所能找到的只是一直烦人的 phpclasses.org 上的 PHP IOC,而且它似乎几乎没有文档,也没有太多的追随者。
我正在尝试用 PHP 编写 TDD 风格,而我最大的绊脚石之一(除了缺乏像样的 IDE)是我必须制作自己的 IoC 容器,才能正确注入所有模拟对象。
有人在 PHP 中使用过 Ioc 容器吗?我所能找到的只是一直烦人的 phpclasses.org 上的 PHP IOC,而且它似乎几乎没有文档,也没有太多的追随者。
我玩过一些 PHP 的 DI 框架,但我没有在生产中使用过。有一些链接:
你提到你会将它用于 TDD - 所以也许看看Dependency Injection for Unit Tests in PHP
Phemto正在再次开发中,恕我直言,看起来很有希望。
您可能想要查看的其他一些类似项目:
桶(免责声明:我是这个的主要作者)
picocontainer的php-port已经存在了很长时间。我认为它不再被积极开发,但另一方面,我相信它相当稳定。不过,我已经很久没有看它了。
我最近偶然发现的一个相当新的项目是Crafty。虽然不知道有多少人使用它。
我也在看sphicy,看起来很有趣。
您可能还想尝试以 Spring(tm) for Java 为模型的 Ding (http://marcelog.github.com/Ding)。它是一个完整的控制反转和依赖注入容器,也支持AOP
Symfony 依赖注入或symfony 2.0 项目中的 PHP 5.3+ 等效组件怎么样。
PHP-DI是另一个依赖注入容器。
它通过注解和最小配置实现依赖注入,这里是一个例子:
class Foo {
/**
* @Inject
* @var Bar
*/
private $bar;
}
它非常易于使用,例如与 Zend Framework 集成。
(是的,我确实在这个框架上工作)
在过去的六个月里,我一直在开发一个名为 Substrate 的PHP IoC/DI 容器。它仍然是一项正在进行中的工作,但它已经在生产中部署了一个半月,并且到目前为止运行良好。
Substrate 受到 Spring Framework 的启发,但在编写时考虑了 PHP 的优点和局限性。此时文档非常少,但有一些示例代码,包括单元测试示例。这是您认为可以用于 TDD 的东西吗?
Laravel 4 拥有最好的 IoC 和 DI 框架。如果您不介意使用框架,Laravel 4 是您的最佳选择