0

我尝试为实现此接口的服务创建 ID 为“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 记录器服务, 覆盖别名。

4

1 回答 1

1

像这样绑定怎么样:

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

于 2019-04-14T16:48:27.623 回答