Сервис декорирования используется в приложениях 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']