ストレージ関数で抽象化し、複数のデータベース アダプターを用意する必要がある状況があります。
ただし、ライブラリ用に複数のデータベース アダプターも用意している外部ベンダーに依存しています。
外部ベンダーから対応する MySQL アダプターの機能を継承する単一のアダプターを MySQL で作成したいと考えています。このアダプターを、独自のライブラリーと、アダプターに依存して機能する外部ライブラリーに依存性注入できます。
もちろん、PHP には多重継承がないので、いろいろ調べて構成にたどり着きました。
複数のデータベース アダプタを 1 つのデータベース アダプタに合成することは良い方法ですか? さらに、外部ベンダーの対応するインターフェースから拡張されたインターフェースを実装した場合、この構成されたオブジェクトは機能しますか?
たとえば、次のことを想像してください。
External1\StorageInterface
External1\MySQLAdapter
External2\StorageInterface
External2\MySQLAdapter
Internal\StorageInterface
Internal\MySQLAdapter
Now: Internal\StorageInterface extends External1\StorageInterface, External2\StorageInterface
Then: Internal\MySQLAdapter implements Internal\StorageInterface
Then: Internal\MySQLAdapter compositions External1\MySQLAdapter and External2\MySQLAdapter
余談ですが、合成はどのように行うべきですか? __call または関数名を再実装し、子オブジェクトを呼び出すだけですか? インターフェイスの制約を満たすのはどれですか?
もう 1 つの質問は、異なるアダプターが同じ関数名を持ち、競合が発生した場合にどう対処するかということです。アダプター パターンは機能しますか?