我正在尝试在PHP中编写TDD样式,而我最大的绊脚石之一(除了缺乏一个像样的IDE)是因为我必须将我自己的黑客攻击IoC容器才能正确地注入我的所有模拟对象。 / p>
有人在PHP中使用过Ioc容器吗?我所能找到的只是PHP IOC on the ever-annoying phpclasses.org,它似乎几乎没有任何文档,也没有太多关注。
答案 0 :(得分:7)
我使用了一些用于PHP的DI Frameworks,但我还没有在生产中使用过。有一些链接:
你提到你会将它用于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就是您的选择