use*_*441 13 zend-framework2 zend-servicemanager
DI我们有ServiceManager什么用途,用途是什么?
它们似乎与两者的配置文件类似zend-di,zend-servicemanager我们可以设置一些选项,如aliases和invokables.
我试图通过这些组件更好地了解幕后发生的事情,而且文档没有给我足够的信息.
你能否告诉我有什么区别,什么时候应该用Di而不是ServiceManager?
Xer*_*kus 15
当服务管理器使用用户提供的工厂时,Zend\DI依赖于魔法,如反射,来检测和注入依赖关系.这是主要的区别.
由于复杂性,调试和性能问题,社区不赞成使用SM.它应该对RAD有好处,但你需要高于平均水平的知识才能正确使用它.
另一方面,SM具有相当冗长和明确的布线,您可以在一年后打开代码并轻松弄清楚发生了什么.
Zend\Di负责将您的类连接在一起,而Zend\ServiceManager您必须手动连接事物并为要实例化的每个类编写工厂闭包.
Zend\ServiceManager速度要快得多,因为它不依赖于慢速反射API.另一方面,为具有数百个类的大型应用程序编写闭包变得非常繁琐.随着应用程序的增长,保持关闭是最新的将变得更加棘手.
为了解决这个问题,我编写了一个名为ZendDiCompiler的Zend Framework 2模块.它依赖于Zend\Di扫描您的代码并自动生成工厂代码来实例化您的类.您将获得两个组件中最好的组件:功能Zend\Di和性能Zend\ServiceManager.
我在ZendDiCompiler的文档中做了大量的工作,并提供了一些简单和更高级的用法示例.
| 归档时间: |
|
| 查看次数: |
1720 次 |
| 最近记录: |