【发布时间】:2012-02-19 10:20:40
【问题描述】:
PHP 中是否有类似 Guice 或类似的依赖注入框架?如果没有,PHP 中有没有好的依赖注入框架?
我必须在 PHP 中实现与在 Java 中实现的代码相同的代码,并且在我的 Java 项目中使用 Guice。所以如果使用类似的框架,PHP版本会更容易实现。
【问题讨论】:
-
这个问题在stackoverflow.com/questions/52072/…得到回答
PHP 中是否有类似 Guice 或类似的依赖注入框架?如果没有,PHP 中有没有好的依赖注入框架?
我必须在 PHP 中实现与在 Java 中实现的代码相同的代码,并且在我的 Java 项目中使用 Guice。所以如果使用类似的框架,PHP版本会更容易实现。
【问题讨论】:
(发表我的评论作为回应)
看看我的 Guice 克隆,名为 Sharbat(意思是果汁)。 API 与 Guice 的完全一样。
它几乎有你需要的一切:
查看自述文件以了解示例用法。
【讨论】:
我喜欢轻量级的Aura.Di。链接的 github 项目页面中的自述文件为您提供了足够的信息,可以在几分钟内开始使用。但它依赖于 5.3。
如果这是您的主要要求,我认为 Guice 对注释的使用不能在 PHP 运行时实现而不会对性能产生非常严重的影响。
【讨论】:
我想推荐你pimple。它非常易于使用。
关于这个依赖注入容器有一个有趣的presentation(这个演示文稿的作者是 pimple 的创建者)。
【讨论】:
【讨论】:
这是另一个要添加到列表中的依赖框架:PHP-DI
这是一个非常实用的容器,遵循约定优于配置(因此您最终编写的配置比使用其他容器少得多)。
它通过注解(可选)和最小配置进行依赖注入:
class Foo {
/**
* @Inject
* @var Bar
*/
private $bar;
public function hello() {
return $this->bar->sayHello();
}
}
请注意,注释是可选的,如果您不喜欢它,则不必使用它。
它非常易于使用,并且与 Zend Framework 和 Symfony 很好地集成。
(免责声明:我确实在这个框架上工作)
【讨论】:
看看
rg\injektor 是一个复杂的 PHP 依赖注入容器,其灵感来自 Guice。与其他基于反射的容器不同,rg\injektor 包含一个工厂类生成器,您可以使用它来防止在生产环境中使用反射。
它具有构造函数注入、属性注入、提供程序类、对象管理、命名注入和更多功能。它经过单元测试,可通过 Composer 获得。
【讨论】:
让我介绍一下我对 Guice 克隆的实现。
【讨论】: