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
?
ServiceLocatorAwareInterface
должен был ввестиServiceLocator
?
Я не уверен в этом, в последних версиях ZF2 этот интерфейс устарел.
Читайте также этот пост на GitHub или же этот вопрос для дополнительной информации.
Я думаю, что это происходит потому, что вы не используете ServiceManager
создать экземпляр этого сервиса.
ServiceLocatorAwareInterface
работает только если эта услуга вызывается через ServiceManager
,
Если вы используете
new CustomSawException();
За пределами ServiceManager AwareInterface не может установить ServiceLocator.
Вы должны объявить эту службу как активируемую, если она не имеет зависимостей, или фабрики в другом случае.