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 plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

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