1
class CustomSawException extends Exception implements ServiceLocatorAwareInterface, SawExceptionInterface
{
    protected $serviceLocator;

    public function test(){
        $this->serviceLocator->get('SomeThing');
    }

    /**
     * Set service locator
     *
     * @param ServiceLocatorInterface $serviceLocator
     */
    public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
    {
        $this->serviceLocator = $serviceLocator;
    }

    /**
     * Get service locator
     *
     * @return ServiceLocatorInterface
     */
    public function getServiceLocator()
    {
        return $this->serviceLocator;
    }

为此引发的异常是:

在 null 上调用 get()

我不知道为什么它会抛出异常? ServiceLocatorAwareInterface应该注入ServiceLocator

4

2 回答 2

1

我认为这是因为您没有使用ServiceManager来实例化此服务。

仅当ServiceLocatorAwareInterface此服务通过ServiceManager.

如果你使用

new CustomSawException();

在ServiceManager 之外,则AwareInterface 无法设置ServiceLocator。

如果该服务没有依赖项,则应将其声明为可调用服务,否则应将其声明为工厂。

于 2016-08-16T07:21:55.530 回答
1

ServiceLocatorAwareInterface应该注入ServiceLocator

我不太确定,在 ZF2 的最新版本中,此接口已被弃用。

另请阅读GitHub 上的这篇文章这个 stackoverflow 问题以获取更多信息。

于 2016-08-15T07:53:18.757 回答