【发布时间】:2020-07-13 22:35:23
【问题描述】:
我有以下问题:我正在开发一个依赖于 jmsserializerbundle (1.1) 的 symfony (2.8) 项目。 在 jms-serializer 包旁边启用 symfony-serializer 时,
# app/config/config.yml
framework:
# ...
serializer: { enabled: true }
jms_serializer:
metadata:
#...
在调用 $this->get('serializer') 或 $this->get('jms_serializer') 时,我只得到 jms-serializer。这个问题似乎已经在 jmsserializerbundle 2.0 版中得到解决:https://github.com/schmittjoh/JMSSerializerBundle/issues/558
有没有办法在不将 jmsserializerbundle 更新到 2.0 的情况下解决这个问题?
在自定义服务中包装 symfony-serializer 时,与普通的 symfony-serializer 配置相比,性能会有什么不同吗?像这样:
<?php
use SomeCustomNormalizer;
use Symfony\Component\Serializer\Encoder\JsonEncode;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\SerializerInterface;
class SerializerService implements SerializerInterface
{
private $serializer;
public function __construct()
{
$this->serializer = new Serializer(
[new SomeCustomNormalizer(), new ObjectNormalizer()],
[new JsonEncode()]
);
}
public function serialize($data, $format, array $context = array())
{
# serialize
}
public function deserialize($data, $type, $format, array $context = array())
{
# deserialize
}
}
# SomeBundle/Resources/config/services.yml
serializer_service:
class: SomeBundle\SerializerService
关于性能的问题出现在我面前,因为现有的 jms 配置在应用内核中注册了 jmsserializerbundle,而我的自定义服务不是这种情况,它只是在 services.yml 中设置的。
提前致谢
解决方案
如下所述,我只需在 jms-config 中添加一行:
# app/config/config.yml
jms_serializer:
enable_short_alias: false
metadata:
#...
【问题讨论】:
-
如果您使用的是 JMSSerializerBundle 1.1 版,您似乎可以使用选项` jms_serializer: enable_short_alias: false 你可以试试这个吗?
-
@Jeroen 太棒了,这似乎已经解决了。现在我只希望现有的代码库不使用短别名:) 谢谢,现在我可以继续我的项目了。你对我的第二个问题有什么意见吗?仅供参考。
-
我愿意,看看我的答案!
标签: symfony jmsserializerbundle jms-serializer