Serialização Nativa do PHP para o Messenger
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