Serialização Nativa do PHP para o Messenger

Andréia Bohner
1 min readMar 17, 2019

--

No Symfony 4.2, o componente Messenger usa o componente Serializer para serializar mensagens para JSON e, em seguida, desserializá-las. Isso gera alguns problemas:

  • O serializador default requer que você tenha métodos getter & setter (ou propriedades públicas) para que eles sejam serializados. Isso torna mais fácil para os dados desaparecerem.
  • Além disso, os getters/setters forçados (e nenhum argumento de construtor obrigatório) forçam você a projetar suas classes de mensagens em torno disso.

A razão original pela qual foi feito isso, foi para que fosse possível exportar “JSON genérico”, para o caso de que outros workers consumissem as mensagens, não importando se usassem Symfony, PHP ou qualquer outra linguagem de programação e tecnologia. No entanto, esse não é o caso de uso comum e estava complicando as coisas desnecessariamente.

No Symfony 4.3, esse problema foi corrigido trocando a serialização para uma nova classe chamada PhpSerializer, que usa serialize() e unserialize() nativos do PHP para serializar mensagens para um transporte.

Se você quiser continuar usando o serializador JSON anterior (ou seu próprio serviço de serializador personalizado), configure-o da seguinte maneira:

# config/packages/messenger.yaml
framework:
messenger:
serializer:
# ID of the service to use to serialize messages
id: 'messenger.transport.symfony_serializer'

Tradução de: New in Symfony 4.3: Native PHP Serialization for Messenger

--

--