【问题标题】:Why is Symfony 3.3.13 source generating a deprecation warning (not in my code)?为什么 Symfony 3.3.13 源代码会生成弃用警告(不在我的代码中)?
【发布时间】:2017-11-29 19:39:28
【问题描述】:

我在 Symfony 3.3.13 全栈应用程序中收到弃用通知。

自 Symfony 3.3 起,Autowiring-types 已被弃用,并将被移除 在 4.0。为“Psr\Log\LoggerInterface”使用别名。

请注意,这是来自 Symfony 源代码,而不是我的代码。

单击“显示跟踪”显示它在文件 vendor/symfony/monolog-bundle/DependencyInjection/MonologExtension.php 中。

代码是:

if (method_exists('Symfony\Component\DependencyInjection\Definition', 'addAutowiringType')) {
         $container->getDefinition('monolog.logger')->addAutowiringType('Psr\Log\LoggerInterface');
    }

我怀疑我需要更新我的 composer.json 文件中的 monolog-bundle 版本,但无法找出正确的版本。当前设置为“~2.8”。

【问题讨论】:

    标签: symfony deprecation-warning


    【解决方案1】:

    这是 symfony 自动装配已更改的通知。 Symfony Autowiring

    这只是一个警告,您的 symfony/monolog-bundle 无论如何都会检查自动装配类型是否存在:

    if (method_exists('Symfony\Component\DependencyInjection\Definition', 'addAutowiringType')) {
    

    您的 Symfony 版本只是保留了 Symfony\Component\DependencyInjection\DefinitionaddAutowiringType 函数来给您这个警告。

    Monolog bundle 最新版本增加了必要的别名github link

    您可以使用 monolog-bundle3.1 版本。

    如果出于任何原因您必须使用任何以前的版本,您需要自己在服务配置中添加别名

    services:
       Psr\Log\LoggerInterface: "@logger"
    

    【讨论】:

      【解决方案2】:

      好的。我终于想到检查 Packagist 以获取最新的独白捆绑版本。

      我将 composer.json 文件中的版本从“~2.8”更改为“~3.1”,并更新了 symfony/monolog-bundle。

      问题解决了。

      【讨论】:

      • 那么这就是 Jannes 的回答。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2015-01-30
      • 1970-01-01
      相关资源
      最近更新 更多