serviceLocator является нулевым

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;
    }

Исключение, которое выдается за это:

вызов get() на ноль

Я не мог понять, почему это исключение?ServiceLocatorAwareInterface должен был ввести ServiceLocator?

2 ответа

Я думаю, что это происходит потому, что вы не используете ServiceManager создать экземпляр этого сервиса.

ServiceLocatorAwareInterface работает только если эта услуга вызывается через ServiceManager,

Если вы используете

new CustomSawException();

За пределами ServiceManager AwareInterface не может установить ServiceLocator.

Вы должны объявить эту службу как активируемую, если она не имеет зависимостей, или фабрики в другом случае.

ServiceLocatorAwareInterface должен был ввести ServiceLocator?

Я не уверен в этом, в последних версиях ZF2 этот интерфейс устарел.

Прочтите также этот пост на GitHub или этот вопрос stackru для получения дополнительной информации.

Другие вопросы по тегам