繁体   English   中英

如何访问Model ZF2中的getServiceLocator

[英]How do I access the getServiceLocator in Model ZF2

我试图访问模型中的getServiceLocator函数。 它在控制器中工作但是当我将它移动到模型中时,我在尝试访问时得到NULL。

 Call to a member function get() on null

看起来下面的链接提供了类似的解决方案,但我无法实现

在zend框架2中的自定义帮助器中使用另一个模块

下面是我试图在模型中运行的代码。

use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class FileManager implements ServiceLocatorAwareInterface {

someFunction(){
    $thumbnailer = $this->getServiceLocator()->get('WebinoImageThumb');
    }
}  

谢谢你

在可能的情况下,您不应该尝试访问除工厂之外的任何类中的ServiceLocator。 这样做的主要原因是如果将ServiceLocator注入到您的类中,您现在不知道该类的依赖项是什么,因为它现在可能包含任何内容。

关于依赖注入,您有两个基本选择:构造函数或setter注入。 根据经验,总是更喜欢构造函数注入。 Setter注入只应用于可选的依赖项,并且它还会使您的代码更加模糊,因为该类现在是可变的。 如果您使用纯粹的构造函数注入,您的依赖项是不可变的,并且您始终可以确定它们将在那里。

使用视图助手,您将使用__invoke而不是__construct来注入依赖项。

有关如何设置类以实现FactoryInterface详细说明,请参阅https://stackoverflow.com/a/18866169/1312094

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM