Nuevo en Symfony 5.1: Decoración de servicios más sencilla

La decoración de servicios se emplea en las aplicaciones Symfony para modificar el comportamiento de algún servicio sin reemplazarlo completamente. Para ello es necesario inyectar el servicio original como argumento del nuevo servicio que lo decora. El problema es que el servicio original ya no existe, así que no puedes usar su ID.

En las versiones anteriores de Symfony tenías que usar el siguiente formato para referirte al servicio original: "ID del servicio que decora" + .inner. Esto es bastante engorroso cuando usas clases de PHP como ID de servicios, así que en Symfony 5.1 lo hemos simplificado para que puedas usar simplemente .inner:

# config/services.yaml
services:
    App\Mailer: ~
 
    # Antes
    App\SpecialMailer:
        decorates: App\Mailer
        arguments: ['@App\SpecialMailer.inner']
 
    # Después
    App\SpecialMailer:
        decorates: App\Mailer
        arguments: ['@.inner']

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


Fuente: New in Symfony 5.1: Simpler service decoration

Comentarios

Publicada el

22 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.