通过 ServiceLocatorAwareInterface 注入 ServiceLocator 不起作用

2024-05-06

我读到实现:ServiceLocatorAwareInterface 将把 serviceLocator 注入到同一个类中。 所以我得到了这个:

Class MyModel implements ServiceLocatorAwareInterface {


    protected $serviceLocator;


    public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
    {
        $this->serviceLocator = $serviceLocator;
    }


    public function getServiceLocator()
    {
        return $this->serviceLocator;
    }

}

但 $this->serviceLocator 始终为 NULL

我还需要做更多的事情吗?


您必须在服务配置中注册您的模型并使用服务管理器检索它。 这是一个例子:

/* Module.php */
public function getServiceConfig() {
    return array(
        'invokables' => array(
            'my_model' => 'Application\Model\MyModel'
        )
    );
}

/* IndexController.php */
public function indexAction() {
    $model = $this->getServiceLocator()->get('my_model');
    $sl = $model->getServiceLocator(); // returns ServiceLocator
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 ServiceLocatorAwareInterface 注入 ServiceLocator 不起作用 的相关文章

随机推荐