在我的应用程序中,我有一个短信服务.此服务是一个简单的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%"]]
Run Code Online (Sandbox Code Playgroud)
SMS服务的定义如下:
service_sms:
class: MyApp\Service\SmsService
calls:
- [setDriver, ["%service_sms_driver%"]]
Run Code Online (Sandbox Code Playgroud)
我面临的问题是我想将两个驱动程序之一的"实例"传递给setDriver我的服务方法.应该在我的哪个驱动程序中定义parameters.yml,例如:
service_sms_driver: ["@mock_driver"]
Run Code Online (Sandbox Code Playgroud)
但是,我坚持使用语法来使其正常工作.我认为它的要点是正确的,除了service_sms_driver我的值的语法parameters.yml和setDriver实际服务的方法调用.
任何帮助赞赏.
编辑: 正如澄清一样,两个驱动程序都实现了相同的界面.但是,每个驱动程序可能需要不同的配置方式,这些方式可能无法在接口中捕获.如果我只是传递类名它会工作正常,但我试图注入实例.希望这是有道理的.