【发布时间】: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