Как переопределить псевдоним Psr \ LogLoggerInterface по умолчанию - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь создать псевдоним с идентификатором Psr \ Log \ LoggerInterface для службы, реализующей этот интерфейс.
Но, похоже, псевдоним не работает.

Вот моя конфигурация в services.yaml

services:
    A\Name\Space\LoggerService:
        arguments:
            $arg1: ''
            $arg2: ''

    Psr\Log\LoggerInterface:
        alias: A\Name\Space\LoggerService

Вот как я пытаюсь получить мой сервис в моем контроллере:

class SomeController extends AbstractController
{
    public function index(LoggerInterface $logger): Response
    {
        $logger->info('index');
        return $this->render('index.html.twig');
    }
}

Я ожидаю получить сервис с классом A\Name\Space\LoggerService, но я получаю класс ‌Symfony\Component\HttpKernel\Log\Logger.

Если я получу сервис напрямую, он будет работать хорошо:

class SomeController extends AbstractController
{
    public function index(\A\Name\Space\LoggerService $logger): Response
    {
        $logger->info('index');
        return $this->render('index.html.twig');
    }
}

Наконец, если я изменю свой псевдоним на:

logger:
    alias: A\Name\Space\LoggerService

, он будет работать хорошо,Но я не хочу переопределять службу регистрации Symfony, только псевдоним.

1 Ответ

1 голос
/ 14 апреля 2019

Как насчет привязки , как этот:

services:
    _defaults:
        bind:
            #...
            Psr\Log\LoggerInterface $logger: '@A\Name\Space\LoggerService'

https://symfony.com/doc/current/service_container.html#binding-arguments-by-name-or-type

...