1

我有一个模型类 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 等)的情况下做到这一点。我的意图是在每个模型类中实现我自己的延迟加载。

4

1 回答 1

0

我建议研究依赖注入来注入你需要的依赖。

如果您仍想使用 ServiceLocator 模式,那么您必须通过 serviceManager 检索此模型类,以便检查该类是否为 ServiceLocatorAware。如果是,您将获得对 ServiceLocator 集的依赖。我不推荐这种方法。

于 2013-05-30T09:11:36.160 回答