問題タブ [dependency-inversion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
299 参照

php - php の依存関係の逆転の問題。(リポジトリパターン)

Laravel でリポジトリ パターンを実装していますが、非常に面倒です。たとえば、製品があるとします。次に、ProductRepository インターフェイスを作成し、次にそのインターフェイスを実装する ProductRepository クラスを作成する必要があります。現在、ProductRepository には次のような非常に一般的なメソッドがいくつかあります。

  • 検索すべて
  • お店
  • アップデート
  • 消去

そして今、私は材料に対して同じことをしなければなりません. これらすべてのジェネリック メソッドを使用して ModelRepository インターフェイスを作成し、Java Generics に似たジェネリック データ型 (つまり、モデル) を渡すことでそれを実装できればいいのですが。

しかし、php はジェネリックをサポートしていないので、どうすればこの単純さを実現できるでしょうか?

0 投票する
1 に答える
191 参照

dependency-injection - サードパーティのライブラリを使用するときに、依存関係の逆転の原則を適用するにはどうすればよいですか?

依存関係の逆転の原則について読んでいましたが、パッケージ B のクラスを直接呼び出すのではなく、パッケージ A (高レベル) がインターフェイスを定義し、パッケージ B (低レベル) がインターフェイスを実装しているため、関係が逆になっていることを理解しています。

しかし、パッケージ B を所有していない場合、依存関係の逆転の原則をどのように適用できますか? 私は PHP を使用しており、Composer パッケージ マネージャーを使用してサード パーティのライブラリをインポートしています。私はそのコードを制御できないため、そのライブラリのクラスに私の高レベル インターフェイスを実装させることはできません。

Google と Stackoverflow で検索しましたが、このユース ケースに言及している質問や記事が見つからないようです。