gpt4 book ai didi

zend-framework2 - zf2 ServiceManager vs ServiceLocator

转载 作者:行者123 更新时间:2023-12-03 20:23:28 26 4
gpt4 key购买 nike

我正在学习 zf2,从网上阅读文档、教程等。现在我对 Zend\ServiceManager\ServiceManagerAwareInterface.php 感到困惑和 Zend\ServiceManager\ServiceLocatorAwareInterface.php .

在某些地方(如 Controller )我使用 $this->getServiceLocator()获取 ServiceManager对象,而在其他一些地方我们使用 ->getServiceManager()它也返回相同的 ServiceManager目的。

最佳答案

定位器是接口(interface)。 Zend Framework 2 的设计是通过“契约式设计”完成的,这意味着您依赖于接口(interface)而不是类。 Manager 是 Locator 的默认实现。

除一个组件外,所有组件都使用定位器。但是,管理器提供的功能比界面说的要多。 Zend\Mvc\Application使用这些功能,因此依赖于 Manager 而不是 Locator。

在 *Aware 初始化程序中使用定位器的决定对于发布来说为时已晚,所以这就是为什么同时存在 ServiceLocatorAwareInterface 的原因。和 ServiceManagerAwareInterface .已经有使用 Manager 的初始化程序的用户空间代码,所以为了向后兼容而保留它。在内部,所有组件都使用 Locator 初始化程序。如果您必须选择,请选择定位器并尽可能将管理器放在一边。

很久以前,我还写了一篇关于定位器和管理器的博客:https://juriansluiman.nl/article/120/using-zend-framework-service-managers-in-your-application

关于zend-framework2 - zf2 ServiceManager vs ServiceLocator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18682835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com