更改 Symfony 自动装配别名的名称
Change the name of a Symfony autowire alias
我正在使用 Symfony 5.3 和 Symfony RateLimiter 包。
为此,应调用一个方法:
public function root(Request $request, RateLimiterFactory $authenticationApiLimiter)
{
}
A RateLimiterFactory
需要调用变量 $authenticationApiLimiter
才能正确自动装配。但是,此项目使用 snake_case 变量标准。
如何使用别名或更改它?
谢谢
我喜欢 Symfony 的大部分设计,但在自动命名事物时它们往往会有点忘乎所以。最好的全职解决方案确实是遵循 Symfony 标准并接受它。但是,如果您确实需要,可以使用 bind 来更改参数名称。
# config/services.yaml
services:
# default configuration for services in *this* file
_defaults:
autowire: true # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
# named alias
Symfony\Component\RateLimiter\RateLimiterFactory $anonymous_api: '@limiter.anonymous_api'
class DefaultController extends AbstractController
{
#[Route('/', name: 'default')]
public function index(RateLimiterFactory $anonymous_api): Response
{
return $this->render('default/index.html.twig', [
'controller_name' => 'DefaultController',
]);
}
}
除了命名别名,您还可以只使用绑定。我认为别名更具体一些,但它们都有效。
要找出服务 ID,首先创建一个新的 5.3 项目,安装 symfony/rate-limiter,然后将 rate_limiter.yaml 文件从文档复制到 config/packages。
bin/console debug:container RateLimiterFactory
Select one of the following services to display its information:
[0] Symfony\Component\RateLimiter\RateLimiterFactory $anonymousApiLimiter
[1] Symfony\Component\RateLimiter\RateLimiterFactory $authenticatedApiLimiter
> 0
Information for Service "limiter.anonymous_api"
===============================================
---------------- --------------------------------------------------
Option Value
---------------- --------------------------------------------------
Service ID limiter.anonymous_api
Class Symfony\Component\RateLimiter\RateLimiterFactory
Tags -
limiter.anonymous_api是关键。您可以在命名别名中使用该服务。
我正在使用 Symfony 5.3 和 Symfony RateLimiter 包。
为此,应调用一个方法:
public function root(Request $request, RateLimiterFactory $authenticationApiLimiter)
{
}
A RateLimiterFactory
需要调用变量 $authenticationApiLimiter
才能正确自动装配。但是,此项目使用 snake_case 变量标准。
如何使用别名或更改它?
谢谢
我喜欢 Symfony 的大部分设计,但在自动命名事物时它们往往会有点忘乎所以。最好的全职解决方案确实是遵循 Symfony 标准并接受它。但是,如果您确实需要,可以使用 bind 来更改参数名称。
# config/services.yaml
services:
# default configuration for services in *this* file
_defaults:
autowire: true # Automatically injects dependencies in your services.
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
# named alias
Symfony\Component\RateLimiter\RateLimiterFactory $anonymous_api: '@limiter.anonymous_api'
class DefaultController extends AbstractController
{
#[Route('/', name: 'default')]
public function index(RateLimiterFactory $anonymous_api): Response
{
return $this->render('default/index.html.twig', [
'controller_name' => 'DefaultController',
]);
}
}
除了命名别名,您还可以只使用绑定。我认为别名更具体一些,但它们都有效。
要找出服务 ID,首先创建一个新的 5.3 项目,安装 symfony/rate-limiter,然后将 rate_limiter.yaml 文件从文档复制到 config/packages。
bin/console debug:container RateLimiterFactory
Select one of the following services to display its information:
[0] Symfony\Component\RateLimiter\RateLimiterFactory $anonymousApiLimiter
[1] Symfony\Component\RateLimiter\RateLimiterFactory $authenticatedApiLimiter
> 0
Information for Service "limiter.anonymous_api"
===============================================
---------------- --------------------------------------------------
Option Value
---------------- --------------------------------------------------
Service ID limiter.anonymous_api
Class Symfony\Component\RateLimiter\RateLimiterFactory
Tags -
limiter.anonymous_api是关键。您可以在命名别名中使用该服务。