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