私のアプリケーションでは、SMS サービスを利用しています。このサービスは単純な POPO であり、実際の SMS 機能を実行するためにインスタンスをドライバーに渡します。
2 つのドライバーが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%"]]
私が直面している問題は、2 つのドライバーのいずれかの「インスタンス」をsetDriverサービスのメソッドに渡したいということです。これがどのドライバーであるかはparameters.yml、次のように my で定義する必要があります。
service_sms_driver: ["@mock_driver"]
ただし、これを正しく機能させるための構文にこだわっています。service_sms_drivermy の値の構文parameters.ymlと実際のサービスのsetDriverメソッド呼び出しを除いて、要点は正しいと思います。
どんな助けでも感謝します。
編集: 明確にするために、両方のドライバーが同じインターフェースを実装しています。ただし、ドライバーごとに異なる構成方法が必要になる場合があり、インターフェイスに取り込まれない場合があります。単純にクラス名を渡していれば問題なく動作しますが、代わりにインスタンスを注入しようとしています。これが理にかなっていることを願っています。