getServiceLocator в служебном классе в zf2

У меня есть общий класс для повторного использования функций всех модулей. Я поместил это в

Application\Service\Utility.php

Теперь я могу создать объект в моем контроллере как

$utilObj = new Utility();

затем вызовите мою функцию как $utilObj->myFn();

Все работает нормально.

Но я не могу получить getServiceLocator() функция там (внутри myFn в Utility.php). Есть ли способ решить эту проблему.
Мне нужен сервисный локатор, потому что мне нужно получить данные конфигурации, управление доктриной и т. Д.

Я не настроил getServiceConfig в module.php.

1

Решение

У меня есть такой класс в моем проекте.
Первый вариант, который у вас есть, — создать фабрику, которая в качестве зависимости включает ваш serviceManager.

А затем в ваших контроллерах (не рекомендуется) или в вашем модуле службы внедрить или получить свой служебный класс через менеджера службы с этим

$this->getServiceLocator()->get('Application\Service\UtilityClass')

Второе решение: ваш служебный класс — это сервис, который может реализовать этот интерфейс:

Zend\ServiceManager\ServiceLocatorAwareInterface;

И используйте эти черты (будьте осторожны, ваша версия PHP должна быть как минимум> 5.4)

Zend\ServiceManager\ServiceLocatorAwareTrait;

Это решение гарантирует вам в вашем обслуживании, что вы можете использовать $this->getServiceLocator() в вашем классе любым методом, который вы хотите. Потому что любой «осведомленный» интерфейс, предоставляемый Zend Framework 2, разработан с инициализатором. Это автоматически добавит некоторые зависимости для вас.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]