php - Symfony 中基于接口(interface)的 DI 配置

标签 php symfony dependency-injection symfony4

在我的 Symfony 项目中,我将有很多具有类似依赖关系的类(但是,这些类彼此并不直接相关)。例如,其中大多数需要访问 EventBus

在其他框架中,我能够为该类指定一个接口(interface),例如:

interface EventBusAwareInterface 
{
    public setEventBus(EventBus $bus);
    public getEventBus() : EventBus
}

然后配置 DI 容器以识别实现此接口(interface)的此类对象,并使用适当的参数调用它们的 setEventBus() 方法。

我想知道 Symfony4 中是否有一种方法可以做到同样的事情。

最佳答案

您可以在 services.yaml 中使用 _instanceof 指令,如下所示:

services:
  _instanceof:
    App\EventBusAwareInterface:
      calls:
        - method: setEventBus
          arguments:
            - '@event.bus.service'

关于php - Symfony 中基于接口(interface)的 DI 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51313473/

相关文章:

php - Magento:从最小订单量中排除类别

java - Guice Assisted : No implementation for java. lang.String 注释为 @com.google.inject.assisted.Assisted(value=prefix) 已绑定(bind)

javascript - 如何使用 Ajax 调用特定 Controller 操作?

mysql - 使用 Symfony2 更新鉴别器列 Doctrine2

php - Symfony2 打开 stream_socket_client()

php - 为什么我们不应该检查用户对象来检查用户是否在 Symfony2 中在线

c# - 为数据库做种时处理依赖注入(inject)

asp.net-mvc - MVC Code First 和具有复杂映射的 Ninject 缓存

php - 为什么使用 curl 而不是其他方法?

php - 使用 PHP 时区偏移