New in Symfony 5.1: Stacks y middleware

El concepto de middleware se refiere al software que se encuentra en medio de dos o más sistemas/APIs y proporciona utilidades como la restricción de uso, la autenticación y el logueado o registro de actividad. En Symfony puedes implementar un middleware mediante la decoración de servicios.

No obstante, cuando decoras muchos servicios seguidos, la configuración es un poco verbosa y no es cómodo reordenar los servicios decorados:

services:
    App\Mailer\Mailer: ~

    App\Mailer\RateLimitedMailer:
        decorates: App\Mailer\Mailer
        arguments: [20] # emails por segundo

    App\Mailer\LoggingMailer:
        decorates: App\Mailer\Mailer

Por eso en Symfony 5.1 hemos introducido un nuevo concepto llamado "stack" para encadenar varios decoradores. El siguiente ejemplo es equivalente al anterior:

services:
    mailer:
        stack:
            - App\Mailer\LoggingMailer: ~
            - App\Mailer\RateLimitedMailer:
                arguments: [20]
            - App\Mailer\Mailer: ~

Esta nueva sintaxis (que también está disponible cuando se usan los formatos XML y PHP) simplifica al máximo las acciones de añadir/eliminar/reordenar los servicios decorados.

La gran ventaja de los "stacks" con respecto al middleware tradicional es que el middleware obliga a que cada elemento de la cadena implemente una determinada interfaz (si no, la ejecución del middleware no continúa). En los "stacks" esto no es necesario.

Esta funcionalidad fue contribuida por Nicolas Grekas en el pull request #36373.


Fuente: New in Symfony 5.1: Stack decorators

Comentarios

Publicada el

27 de abril de 2020

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.