在我的应用程序中,我有一个 SMS 服务。该服务是一个简单的 POPO,它为驱动程序提供一个实例来执行实际的 SMS 功能。
想象一下,我有两个驱动程序,mock_driver
它们gateway_driver
在本services
节中被定义为如下所示:
mock_driver:
class: MyApp\Service\Sms\MockDriver
gateway_driver:
class: MyApp\Service\Sms\GatewayDriver
calls:
- [setConfig, ["%gateway_user%", "%gateway_password%", "%gateway_endpoint%"]]
SMS服务定义如下:
service_sms:
class: MyApp\Service\SmsService
calls:
- [setDriver, ["%service_sms_driver%"]]
我面临的问题是我想将两个驱动程序之一的“实例”传递给setDriver
我的服务方法。这是哪个驱动程序应该在 my 中定义parameters.yml
,例如:
service_sms_driver: ["@mock_driver"]
但是,我坚持使用语法以使其正常工作。我认为它的要点是正确的,除了service_sms_driver
my 中的值的语法parameters.yml
和setDriver
实际服务的方法调用。
任何帮助表示赞赏。
编辑: 作为澄清,两个驱动程序实现相同的接口。但是,每个驱动程序可能需要不同的配置方式,而这些配置方式可能无法在接口中捕获。如果我只是简单地传递类名,它会工作得很好,但我正在尝试注入实例。希望这是有道理的。