我尝试为实现此接口的服务创建一个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记录器服务,仅 别名。
答案 0 :(得分: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