Новое в Symfony 5.1: Упрощенное оформление сервисов

Сервис декорирования используется в приложениях Symfony для изменения поведения некоторого сервиса без его полной замены. Для этого вам нужно добавить исходный сервис в качестве аргумента нового сервиса оформления. Проблема в том, что исходный сервис больше не существует, поэтому вы не можете использовать его исходный идентификатор.

В предыдущих версиях Symfony вам нужно было использовать синтаксис decorating service ID + .inner для ссылки на эту службу. Это быстро становится громоздким в YAML/XML при использовании классов PHP в качестве идентификаторов сервисов. Вот почему в Symfony 5.1 упростили эту функцию, чтобы всегда использовать .inner для ссылки на исходный сервис:

# config/services.yaml
services:
    App\Mailer: ~

    # Before
    App\SpecialMailer:
        decorates: App\Mailer
        arguments: ['@App\SpecialMailer.inner']

    # After
    App\SpecialMailer:
        decorates: App\Mailer
        arguments: ['@.inner']