Lavavelリポジトリパターン


当初投稿されます:https://asperbrothers.com/blog/implement-repository-pattern-in-laravel/
Laravelアプリケーションにレポジトリパターンを実装するために必要な最初のことは、リポジトリパターンがどのようなものであるかを理解することです.
この記事では、次のことを学びます.
リポジトリパターンを使用する主な利点
  • Laravelでリポジトリパターンを実装する方法
  • 私たちはどのようにコードを起動し、LALAVELアプリ
  • でそれを実装する手順を示します

    重要なこと
    リポジトリは、ドメインと永続層の間の分離です.リポジトリは、データベース、ファイルシステムまたは外部サービスに格納されたデータにアクセスするためのコレクションインターフェイスを提供します.データはオブジェクトの形で返されます.
    Laravelアプリケーションのリポジトリパターンを使用する主なアイデアは、モデルとコントローラ間のブリッジを作成することです.言い換えれば、コントローラからモデルのハード依存性を分離する.モデルは、データベースからのデータとの通信や抽出に責任を負わない.モデルは、与えられたテーブル/ドキュメント/オブジェクトまたは我々のデータ構造の他のタイプを表すオブジェクトでなければなりません、そして、これはその唯一の責任でなければなりません.したがって、あなたのLaravelコードをきれいにしておくためには、モデルが決して責任を負うべきでない責任を分離するのにリポジトリを使用する価値があります.
    リポジトリパターンの使用には多くの利点があり、以下は最も重要なもののリストです.
    データアクセスロジックの
  • 集中化は、コードを
  • を維持するのをより簡単にします
  • ビジネスとデータアクセスロジックは、別に
  • をテストすることができます
  • はコード
  • の複製を減らします
  • プログラミングエラーを作るためのより低いチャンス
  • ほとんどのLaravelアプリケーションでは、そのようなコードが発生する可能性があります.
    class UsersController extends Controller
    {
       public function index()
       {
           $users = User::all();
    
           return view('users.index', [
               'users' => $users
           ]);
       }
    } 
    
    
    一見して、それは悪く見えません.しかし、クライアントがデータ構造を変更することを提案しているのか、MySQL/PostgreSQLではなく、どこか他のデータをどこか他のデータエンジンを使ってサポートしていないのではないかと考えてみる価値はありますか?我々がそのようなコードを書くとき、そのような変化は実装するのが非常に難しいか、あるいは不可能であることがわかるかもしれません!したがって、すべての実装はインターフェイスに基づいている必要がありますので、変更の場合は、アプリケーション全体でコードを変更する必要はありませんが、インターフェイスを実装する別のクラスを作成する必要はありません.これは正しい方法で書かれたコードでなければなりません.(上記のコードは正しい方法で書かなければなりません).
    class UsersController extends Controller
    {
       private $userRepository;
    
       public function __construct(UserRepositoryInterface $userRepository)
       {
           $this->userRepository = $userRepository;
       }
    
       public function index()
       {
           $users = $this->userRepository->all();
    
           return view('users.index', [
               'users' => $users
           ]);
       }
    }
    
    この特定の例では、クライアントがデータ構造を変更したいときに、それは我々のアプリケーションにこれらの変更を実装するために子供の遊びです!私たちは単にユーザリポジトリインターフェイスを実装するクラスを作成し、新しい方法でそれを引き出すことができるロジックを含んでいます.そういうわけで、クライアントが最も困難な変化で来るときでも、我々が簡単にそれに対処することができるように、コードを書くことはとても重要です.リポジトリテンプレートは大いにこのプロセスを容易にします!
    全体の記事をhttps://asperbrothers.com/blog/implement-repository-pattern-in-laravel/に行くを参照してください.