Предоставлено
Николас Грекас
в # 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'