4

私のアプリケーションでは、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メソッド呼び出しを除いて、要点は正しいと思います。

どんな助けでも感謝します。

編集: 明確にするために、両方のドライバーが同じインターフェースを実装しています。ただし、ドライバーごとに異なる構成方法が必要になる場合があり、インターフェイスに取り込まれない場合があります。単純にクラス名を渡していれば問題なく動作しますが、代わりにインスタンスを注入しようとしています。これが理にかなっていることを願っています。

4

1 に答える 1