21

Laravel のリポジトリの利点は何ですか? アプリケーションのビジネスロジックからモデル層を抽象化しているようです。実際には、リクエストのライフサイクル全体をそれほど複雑にするだけのように見えますが、ほとんど利益はありません。

誰かが Laravel リポジトリの利点を明らかにできますか?


編集

しばらくリポジトリを使用した後、次を追加します。

  • リポジトリは単一の責任を強制します
  • リポジトリは、エンティティのコレクションを 1 つだけ返す必要があります
  • 依存性注入とは別ですが、概念は兄弟です
  • 実際のストレージ実装 (MySQL など) のストレージ抽象化
  • より簡単なテスト
4

5 に答える 5

32

提供されたチュートリアルのように、リポジトリは Laravel の概念である必要はありません。むしろ、Laravel で可能な IoC インジェクションの形式です。同様に注入される可能性のあるオブジェクトは、それがリポジトリであることを意味しません。たまたま「リポジトリ」も使用している Taylor Otwell の良い例については、ビデオを参照してください: http://vimeo.com/53029232

この例では、データの取得元であるリポジトリがコントローラーに渡される抽象化を行います。渡されたデータが指定されたインターフェイスを実装している限り、コントローラーは、データが最初にどこから来たかを気にすることなく、インターフェイスの定義済みメソッドを「幸せに」利用できます。これにより、コントローラーを壊すことなく、データの初期ソースを切り替えることができます。ファイル、データベース、外部 API、モック オブジェクト、または任意の配列からデータを取得できます。基本的に、コントローラはリポジトリによって表されるデータを収集する必要はありません。そのまま受け取って使えます。

于 2013-06-29T01:45:45.597 に答える
1

リポジトリ パターンを使用する主な理由は、データ ソースを簡単に変更できるようにするためです。たとえば、私の経験では、最も一般的な変更はキャッシュ レイヤーの追加です。これは、リポジトリがインターフェイスを実装しているため、キャッシュを処理する新しいメソッドを使用して同じインターフェイスを実装する新しいオブジェクトを構築し、バインディングを変更するだけです。

于 2015-06-03T18:25:04.670 に答える