如何覆盖默认 Psr\LogLoggerInterface 别名
How override default Psr\LogLoggerInterface alias
我尝试为实现此接口的服务创建 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');
}
}
我希望通过 class A\Name\Space\LoggerService
获得服务,但我得到 class 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 记录器服务,仅 别名。
像这样 绑定 怎么样 :
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
我尝试为实现此接口的服务创建 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');
}
}
我希望通过 class A\Name\Space\LoggerService
获得服务,但我得到 class 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 记录器服务,仅 别名。
像这样 绑定 怎么样 :
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