Documentação do Symfony - versão 3.1
Renderizada do repositório symfony-docs-pt-BR no Github
Serializar e desserializar de e para objetos e em formatos diferentes (por exemplo, JSON ou XML) é um tema muito complexo. O Symfony vem com um Componente Serializer, que lhe fornece algumas ferramentas que você pode aproveitar para sua solução.
Na verdade, antes de começar, familiarize-se com o serializer, normalizadores e codificadores (encoders) lendo Componente Serializer. Você também deve verificar o JMSSerializerBundle, que expande as funcionalidades oferecidas pelo serializer do núcleo do Symfony.
New in version 2.3: O Serializer sempre existiu no Symfony, mas antes do Symfony 2.3,
você mesmo precisava construir o serviço serializer
.
O serviço serializer
não está disponível por padrão. Para ativá-lo, habilite-o
em sua configuração:
1 2 3 4 5 | # app/config/config.yml
framework:
# ...
serializer:
enabled: true
|
1 2 3 4 5 | <!-- app/config/config.xml -->
<framework:config>
<!-- ... -->
<framework:serializer enabled="true" />
</framework:config>
|
1 2 3 4 5 6 7 | // app/config/config.php
$container->loadFromExtension('framework', array(
// ...
'serializer' => array(
'enabled' => true
),
));
|
Uma vez ativado, o serviço serializer
estará disponível no container
e será carregado com dois encoders
(JsonEncoder
e
XmlEncoder
)
mas não normalizers, ou seja, você
precisará carregar o seu próprio.
Você pode carregar normalizadores e/ou codificadores adicionando tags a eles como serializer.normalizer e serializer.encoder. Também é possível definir a prioridade da tag, a fim de decidir a ordem de correspondência.
Aqui está um exemplo de como carregar o
GetSetMethodNormalizer
:
1 2 3 4 5 6 | # app/config/services.yml
services:
get_set_method_normalizer:
class: Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
tags:
- { name: serializer.normalizer }
|
1 2 3 4 5 6 | <!-- app/config/services.xml -->
<services>
<service id="get_set_method_normalizer" class="Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer">
<tag name="serializer.normalizer" />
</service>
</services>
|
1 2 3 4 5 6 7 8 | // app/config/services.php
use Symfony\Component\DependencyInjection\Definition;
$definition = new Definition(
'Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer'
));
$definition->addTag('serializer.normalizer');
$container->setDefinition('get_set_method_normalizer', $definition);
|
ApiPlatform fornece um sistema de API com suporte aos formatos hypermedia JSON-LD e Hydra Core Vocabulary. Ele é construído com o Framework Symfony e seu componente Serializer. Ele fornece normalizadores personalizados e um encoder personalizado, metadata personalizados e um sistema de cache.
Se você deseja aproveitar todo o poder do componente Serializer do Symfony, verifique como esse bundle funciona.