Nuevo en Symfony 4.3: Serialización nativa de PHP para Messenger

En Symfony 4.2, el componente Messenger utiliza el componente Serializer para serializar los mensajes a JSON y deserializarlos después. La razón original para hacer esto era que al exportar los mensajes en formato JSON, cualquier otro sistema podría consumirlos, incluso si no usaban Symfony o PHP.

Aunque al principio pensamos que esto era lo mejor, tiene un inconveniente muy importante: el serializador por defecto requiere que el objeto a serializar tenga getters y setters o propiedades públicas. Esto hace que tengas que diseñar tus clases de acuerdo a como lo necesita el componente Messenger.

Por todo ello, y considerando que usar JSON complica más las cosas en vez de simplificarlas, en Symfony 4.3 hemos decidido utilizar la serialización nativa de PHP gracias a una nueva clase llamada PhpSerializer que utiliza las funciones serialize() y unserialize() de PHP para serializar los mensajes.

Si prefieres continuar usando el serializador JSON anterior (o incluso, tu propio serializador) puedes utilizar la siguiente configuración:

# config/packages/messenger.yaml
    framework:
        messenger:
            serializer:
                # ID del servicio que serializa mensajes
                id: 'messenger.transport.symfony_serializer'

Esta funcionalidad fue contribuida por Ryan Weaver en el pull request #29958.

Fuente: New in Symfony 4.3: Native PHP Serialization for Messenger

Comentarios

Publicada el

30 de abril de 2019

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.