我有一个模型类User,它有两个字段:
$ job_id - >在JobTable中暂停ID工作 $ job - >需要使用JobTable
中的正确对象延迟加载(在getJob()上)我的问题是我无法通过我的类获取JobTable的实例,因为我无法访问serviceLocator实例(总是Null)。我的课程如下:
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class User implements ServiceLocatorAwareInterface {
protected $serviceLocator;
public function setServiceLocator(ServiceLocatorInterface $serviceLocator) {
$this->serviceLocator = $serviceLocator;
}
public function getServiceLocator() {
return $this->serviceLocator;
}
protected $role;
protected $role_id;
public function getRole()
{
$roleTable = $this->serviceLocator->get('Core\Model\RoleTable'); // serviceLocator is always null
}
}
有没有更好的方法可以不使用其他ORM(Doctrine等)。我的目的是在每个Model类中实现我自己的延迟加载。
答案 0 :(得分:0)
我建议调查dependency injection以注入您需要的依赖项。
如果您仍想使用ServiceLocator模式,则必须通过其他服务管理器检索此模型类,以便检查该类是否为ServiceLocatorAware。如果是,则获得对ServiceLocator集的依赖。 我不推荐这种方法。