【问题标题】:Symfony Serializer: setCircularReferenceHandler() is deprecatedSymfony 序列化器:不推荐使用 setCircularReferenceHandler()
【发布时间】:2019-04-04 14:23:45
【问题描述】:

Symfony 的 (FrameworkBundle v4.2.5) 序列化组件 (v4.2.5) 现在在日志中告诉我:

php.INFO: User Deprecated: The "Symfony\Component\Serializer\Normalizer\AbstractNormalizer::setCircularReferenceHandler()" method is deprecated since Symfony 4.2, use the "circular_reference_handler" key of the context instead. 

但问题是,我没有明确地调用这个方法。这个调用实际上是由 SymfonyFrameworkBundle 触发的。

我的 framework.yaml 中有这个:

serializer:
  enabled: true
  circular_reference_handler: Cbp\Utils\CircularReferenceHandler

我在 FrameworkExtension(由 FrameworkBundle 提供)中看到了这一点:

    if (isset($config['circular_reference_handler']) && $config['circular_reference_handler']) {
        $container->getDefinition('serializer.normalizer.object')->addMethodCall('setCircularReferenceHandler', [new Reference($config['circular_reference_handler'])]);
    }

所以我的问题是:如何修复此弃用通知?

【问题讨论】:

  • 您的服务Cbp\Utils\CircularReferenceHandler 声明是否正确,您是否尝试过清除缓存?
  • @tchap 老实说,我看不出与您的问题的相关性。事情正常,这不是问题。但是有一个我想删除的弃用通知,我不知道如何删除。
  • 您已经使用了“circular_reference_handler”键,所以弃用通知不应该存在,这就是我建议清除缓存的原因。至于服务,如果没有正确声明,它可能会使“circular_reference_handler”无效,从而改用setCircularReferenceHandler,从而显示弃用通知。

标签: php symfony serialization


【解决方案1】:

原来是文档和 FrameworkExtension 中的一个错误。

可以在here找到错误报告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    相关资源
    最近更新 更多