Предоставлено
Николас Грекас
в # 28234.
В современных приложениях Symfony, благодаря автонастройке сервисов и автоконфигурации сервисов, нет необходимости настраивать большинство (или какие-либо) из ваших сервисов. Однако в некоторых крайних случаях вам может потребоваться указать Symfony, какой именно сервис следует внедрить в другие сервисы.
Это решается с помощью локальной привязки, которая позволяет связывать службы по типу или имени. Например, если вы используете YAML для настройки служб:
# config/services.yaml services: _defaults: bind: # pass this value to any $adminEmail argument for any service # that's defined in this file (including controller arguments) $adminEmail: '[email protected]' # pass this service for any LoggerInterface type-hint for any # service that's defined in this file Psr\Log\LoggerInterface: '@monolog.logger.request'
В Symfony 4.2 мы улучшили эту функцию, чтобы разрешить привязку сервисов по типу и имени одновременно. Эта новая функция позволяет более точную привязку, поскольку она применяется только в том случае, если тип аргумента и имя аргумента совпадают.
# config/services.yaml services: _defaults: bind: # it works with scalar types too (string, int, array, etc.) string $adminEmail: '[email protected]' # but it's mostly used with classes Psr\Log\LoggerInterface $requestLogger: '@monolog.logger.request'