服务容器别名仅适用于特定环境

时间:2016-06-29 12:18:17

标签: symfony

Symfony 2.8.7我的services.yml中有一个简单的别名定义:

    h4cc_alice_fixtures:
         alias: h4cc_alice_fixtures.manager

这在DEV中非常有效,因为在我的AppKernel中注册了h4cc:

public function registerBundles()
{
    $bundles = [
    //...
    ];

    if (in_array($this->getEnvironment(), array('dev', 'test'))) {
        $bundles[] = new h4cc\AliceFixturesBundle\h4ccAliceFixturesBundle();
    }

    return $bundles;
}

在PROD中,我现在遇到依赖注入错误,因为当然无法解析h4cc_alice_fixtures.manager。

我想只在DEV和TEST中使用h4ccAliceFixturesBundle,但目前我只有一个services.yml。

有没有办法只为DEV和TEST定义别名?

更新

因为有类似的东西:

my_service:
    class: Acme\AcmeBundle\Services\MyService
    arguments: [ '@tenant_user_service', '@?debug.stopwatch' ]

仅当App处于调试模式时才注入秒表...

我认为Alias可能存在类似的东西。

1 个答案:

答案 0 :(得分:1)

您可以使用与 routing_dev.yml 类似的单独services.yml。在 config_dev.yml config_test.yml 的导入部分中,您可以替换现有行:

imports:
    - { resource: config.yml }

以下条目:

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services_dev.yml }

就像你已经在你的全局config.yml中拥有它一样。只需将后缀添加到文件中即可。