Я хотел бы использовать Zend Service Manager в моей пользовательской базе кода. Он не построен на Zend MVC, и вместо этого я использую только несколько пакетов Zend, таких как Zend Console и Zend Config.
Я хотел бы использовать Zend Service Manager с функциональностью, как только код входит в мой класс Core, я хотел бы инициализировать объекты DB и Config и сохранить их как сервис в Zend Service Manager. Теперь я хотел бы использовать этот сервис на всей моей базе кода.
Есть ли способ использовать его, не передавая менеджер сервисов в конструктор каждого класса? Кроме того, другие мои классы не будут расширяться из этого базового класса, и вместо этого этот базовый класс будет создавать объекты на основе моих требований.
Вот как я создаю сервис:
$config = \Zend\Config\Factory::fromFiles([
APPLICATION_PATH . '/config/config.ini',
APPLICATION_PATH . '/config/' . $route->getMatchedParam('brand') . '/' . $route->getMatchedParam('department') . '/config.ini',
]);
$serviceManager = new ServiceManager([
'factories' => [
stdClass::class => InvokableFactory::class,
],
]);
$serviceManager->setService('config', $config);
Да, вы можете использовать его где угодно. Это лучшая часть ZF, вы можете использовать его части в любом месте. И нет, вам не нужно передавать конфигурацию по методу конструкции. Он имеет методы setFactory и setService, а также множество других. проверять, выписываться документация
Других решений пока нет …