Symfony - 如何使用参数值为服务设置别名

Symfony - How to set alias for a service using a parameter's value

我想为一个服务设置别名,以便在不同的环境下使用不同的服务。 所以,这里是 services.yaml

.
.
.
register_request:
        alias: %register_request_service%
main_register_request:
        class: AppBundle\Services\Requests\RegisterRequest
null_register_request:
        class: AppBundle\Services\Requests\NullRegisterRequest
.
.
.

在我的开发环境中,parameters.yml 看起来像:

.
.
.
    register_request_service: null_register_request
.
.
.

但是不行!当我使用 clear:cache 它说:

  [Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]
  Unable to replace alias "%register_request_service%" with "register_request".

  [Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]
  The service definition "%register_request_service%" does not exist.

知道我遗漏了什么吗?

仅将 class 名称定义为参数会更容易。这是 Symfony 本身及其捆绑包中经常使用的成语。

Elnur 的答案有效,但我决定以这种方式解决问题:

我已经为开发环境创建了一个服务配置文件 (services_dev.yml) 并覆盖了其中的服务。所以,services.yml 看起来像:

# app/config/services.yml
# ...
services:
    # ...
    register_request:
            class: AppBundle\Services\Requests\RegisterRequest
    # ...

并且 services_dev.yml 看起来像:

# app/config/services_dev.yml
services:
    register_request:
            class: AppBundle\Services\Requests\NullRegisterRequest

然后,我在 config_dev.yml

中导入了 services_dev.yml
# app/config/config_dev.yml
imports:
    - { resource: config.yml }
    - { resource: services_dev.yml }

# ...

这样,应用程序设置过程就不需要有关这些 类 名称的额外信息。