У меня следующая проблема: я работаю над проектом symfony (2.8), который зависит от jmsserializerbundle (1.1). При включении symfony -сериализатора вместе с пакетом jms-serializer
# app/config/config.yml
framework:
# ...
serializer: { enabled: true }
jms_serializer:
metadata:
#...
при вызове $this->get('serializer')
или $this->get('jms_serializer')
я получаю только jms-сериализатор. Эта проблема, похоже, была решена в jmsserializerbundle версии 2.0: https://github.com/schmittjoh/JMSSerializerBundle/issues/558
Есть ли способ решить эту проблему без обновления jmsserializerbundle до 2.0?
Будет ли что-нибудь разница в производительности по сравнению с обычной конфигурацией symfony -сериализатора, при упаковке symfony -сериализатора в настраиваемую службу? вот так:
<?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:
#...