我有一些关于我的应用程序从 zf2 迁移到 zf3 的问题。我已经阅读了迁移指南并按照那里的描述开始了迁移过程。
根据迁移指南,控制器中不再有 serviceLocator 可用。我曾经在每个控制器操作中使用它来将配置变量数组(位于 module.config.php 中)、Doctrine MongoDB DocumentManager和Doctrine EntityManager注入到需要它们的模型中。现在我收到了很多已弃用的警告消息,如下所示;
PHP 已弃用:Zend\ServiceManager\ServiceManager::getServiceLocator 的使用自 v3.0.0 起已弃用;请在第 169 行的 /var/www/html/LeapX/vendor/zendframework/zend-servicemanager/src/ServiceManager.php 中使用传递给工厂的容器
因为我需要访问配置变量并将Doctrine DocumentManager和Doctrine EntityManager注入到我的模型中,所以我必须$this->getServiceLocator()
在我的控制器中调用。让我知道如何解决这个问题。有没有可能将这些依赖项直接注入我的模型类?我是否需要为模型使用工厂?
另一个问题是关于控制器的工厂,我是否需要为我的应用程序的每个控制器创建单独的工厂?在应用程序的几个模块中分布着相当多的控制器。如果我为每个控制器添加专用工厂,则数量将增加一倍。让我知道执行此操作的最佳方法。