我开始将我的应用程序迁移到symfony4,但我在我的一个第三方捆绑包(tbbcmoneybundle .我想知道要更改什么才能提出 PR
由于这些错误,当前构建失败(在此处完成报告)
The "doctrine.database_create_command" service is private, getting it from the container is deprecated since Symfony 3.2 and will fail in 4.0. You should either make the service public, or stop using the container directly and use dependency injection instead: 25x
12x in ConfigTest::setUp from TbbcMoneyBundleTestsConfig
6x in ConsoleTest::setUp from TbbcMoneyBundleTestsConsole
3x in ConsoleTest::testRunRatioList from TbbcMoneyBundleTestsConsole
2x in ConsoleTest::testRunRatioFetch from TbbcMoneyBundleTestsConsole
1x in ConfigTest::testHistoryOfFetchedRatio from TbbcMoneyBundleTestsConfig
1x in ConsoleTest::testRunSaveRatio from TbbcMoneyBundleTestsConsole
我想它与这段代码有关
$this->runCommand($this->client,'doctrine:database:create');
$this->runCommand($this->client,'doctrine:schema:update --force');
但是,我没有看到如何解决此问题,谷歌似乎对此没有帮助。
问题看起来来自Symfony 4中容器意识的丧失(如果这是一个有效的短语),它始于Symfony 3.4。这篇博客讨论了在 3.4 中限制容器注入以及在 4.0 中它将如何消失。
看起来好像有人打开了一个PR来升级到Symfony 4,但这失败了。(看起来你也在努力帮助它。
根据这个失败的Travis集成测试,扩展"ContainerAwareCommand"的命令是失败的根源。
这是有道理的。ContainerAwareCommand 尝试注入容器,该容器在 Symfony 4 中设置为private
(从 3.4 开始已弃用),如上面的博客文章所述。一个修复程序,如果我正确阅读了您的问题,我认为您想在 TBBC 的 PR 中解决此问题,似乎是从这些命令类中删除 ContainerAwareCommand 的扩展并注入必要的服务。请参阅有关命令的新 Symfony 4 文档(请注意,ContainerAware 不再像 2.8 中那样是一个选项。
简而言之,摆脱对ContainerAwareCommand的扩展,并注入这些命令使用的服务。(可能需要执行一些额外的配置以确保服务是公共的。