PHPSymfony-将接口自动配置为构造函数参数,但在test .env上使用来自接口的特定类

mkh04yzy  于 2023-06-28  发布在  PHP
关注(0)|答案(1)|浏览(97)

假设我们有以下接口:

interface FooInterface {
//...
}

我们有两个类来实现这个接口:

class Foo implements FooInterface {
  //...
}

class Bar implements FooInterface {
  //...
}

在Symfony中,我想注入接口,每当我在类的构造函数中使用FooInterface作为DI时,我想要特定的类“Foo”。例如

class SomeClass {

  public function __construct(FooInterface $foo) { ... }

}

到目前为止一切顺利,现在我只想在测试环境中注入类“Bar”。(.env APP_ENV=test)
是否有一个全局配置,我可以使用它来指定将根据环境注入哪个类?

y1aodyip

y1aodyip1#

在`config/services.yaml中设置不同env的参数:

imports:
    - { resource: 'services_' ~ env('APP_ENV') ~ '.yaml' }

config/services_prod.yaml中,将Foo设置为注入类

Namespace\FooInterface: '@Namespace\Foo'

config/services_test.yaml中,将Bar设置为注入类

Namespace\FooInterface: '@Namespace\Bar'

相关问题