我正在学习 zf2,从网上阅读文档、教程等。现在我很困惑Zend\ServiceManager\ServiceManagerAwareInterface.php
and Zend\ServiceManager\ServiceLocatorAwareInterface.php
.
也在某些地方(比如控制器)我使用$this->getServiceLocator()
获取ServiceManager
对象,而在其他一些地方我们使用->getServiceManager()
它也返回相同的ServiceManager
object.
定位器是接口。 Zend Framework 2 的设计是通过“契约设计”完成的,这意味着您依赖于接口而不是类。 Manager 是 Locator 的默认实现。
除一个组件外,所有组件都使用定位器。然而,管理器提供的功能比界面上显示的要多。这Zend\Mvc\Application
使用这些功能,因此依赖于管理器而不是定位器。
在 *Aware 初始化程序中使用定位器的决定对于发布来说为时已晚,因此这就是为什么有两个ServiceLocatorAwareInterface
and a ServiceManagerAwareInterface
。已经有使用管理器初始化程序的用户态代码,因此保留它是为了向后兼容。在内部,所有组件都使用定位器初始值设定项。如果必须选择,请选择“定位器”并尽可能将“管理器”放在一边。
不久前,我还在博客中介绍了定位器和管理器:https://juriansluiman.nl/article/120/using-zend-framework-service-managers-in-your-application https://juriansluiman.nl/article/120/using-zend-framework-service-managers-in-your-application
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)