У меня есть некоторые проблемы, связанные с миграцией моего приложения с zf2 на zf3. Я ознакомился с руководствами по миграции и начал процесс миграции, как описано там.
Согласно руководству по миграции, serviceLocator больше не доступен в контроллерах. Раньше я использовал его в каждом действии контроллера для внедрения массива переменных config (расположенного в module.config.php), Doctrine MongoDB DocumentManager и Doctrine EntityManager в модели, где они необходимы. Теперь я получаю так много устаревших предупреждений, как показано ниже;
PHP устарел: Использование Zend\ServiceManager\ServiceManager::getServiceLocator устарело, начиная с версии 3.0.0; вместо этого используйте контейнер, переданный фабрике, в /var/www/html/LeapX/vendor/zendframework/zend-servicemanager/src/ServiceManager.php в строке 169.
Поскольку мне нужно получить доступ к переменным config и внедрить Doctrine DocumentManager и Doctrine EntityManager в мои модели, мне пришлось вызвать $this->getServiceLocator()
в моих контроллерах. Дайте мне знать, как решить эту проблему. Есть ли возможность напрямую внедрить эти зависимости в мои классы моделей? Должен ли я использовать фабрики для моделей?
И другой вопрос: когда дело доходит до фабрик относительно контроллеров, нужно ли мне создавать отдельные фабрики для каждого контроллера моего приложения? В приложении довольно много контроллеров, разбросанных по нескольким модулям. Если я добавлю выделенную фабрику для каждого контроллера, их число будет удвоено. Дайте мне знать, как это сделать лучше всего.