假设我们有以下接口:

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=测试)

有没有全局配置可以用来指定将根据环境注入哪个类?

推荐答案

`config/services.yaml中不同环境的设置参数:

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

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

Namespace\FooInterface: '@Namespace\Foo'

config/services_test.yaml个单杠中设置为注入类

Namespace\FooInterface: '@Namespace\Bar'

Php相关问答推荐

谷歌云SQL / mysql谁是对的?

管理员订单列表中的自定义列与WooCommerce 8.6.1一起消失

如何让PHP变量跨越多个脚本调用?

根据在WooCommerce购物车和 checkout 中 Select 的送货方式显示快捷代码内容

模式 bootstrap 未显示

在php中,方法之间的属性链接是如何工作的

使用随机生成器在MYSQL中创建唯一ID-定义一个数组来存储已知ID是否安全

函数存储到变量中

更改特定产品标签的 Woocommerce 产品名称

PHP向API发送curl请求

Google Sheets PHP API - 添加多个选项卡时出现问题

如何在构建 PHP 类别数组树的递归函数中将父面包屑传递给子项?

php var_dump(1) 返回字符串(4)

为什么在解压缩具有混合字符串和 int 键的关联数组时出现错误消息无法使用位置参数...?

Laravel 测试 assertJsonMissing 不适用于唯一的键.为什么?

如何将数字文本文件添加到 PHP 数学方程式中?

列表不在 GROUP BY 子句中并且包含 X2CRM 中的非聚合列

如果 static:: 被解析为B,为什么 PHP 会执行A的方法

如何在 Laravel 中验证多个输入?

如何正确使用Flysystem和Local Adapter