Repository pattern là gì

  -  

Laravel là 1 trong PHP. framework, có mã nguồn mở với miễn chi phí, được xây cất nhằm cung cấp cùng trở nên tân tiến các phần mềm, áp dụng, theo phong cách xây dựng MVC. Lúc bấy giờ, Laravel đã là PHP framework thịnh hành nhất với tốt nhất.giữa những phương pháp thông dụng nhất để tạo một áp dụng áp dụng Laravel là Repository Pattern.Trước tiên, nhằm hoàn toàn có thể tiến hành được Repository Pattern trong Laravel chúng ta rất cần phải gọi được Repository Pattern là gì và lợi ích Lúc thực hiện nó.

Bạn đang xem: Repository pattern là gì

Đang xem: Repository pattern là gì

Repository Pattern là gì?

Repository Pattern là một biện pháp tổ chức triển khai source code vào Laravel.Ý tưởng cơ bạn dạng cùng mục tiêu bao gồm nhằm sử dụng Repository Pattern là desgin một lớp kết nối thân tầng Business Login với Data Access, giúp cho bài toán truy cập tài liệu được chặt chẽ và bảo mật thông tin hơn.

Xem thêm: Cách Tạo Con Giấm Là Gì ? Cách Làm Con Giấm Sữa Tại Nhà Con Giấm Nuôi Là Gì

Trong Laravel, Repository là cầu nối thân Model với Controller, lưu trữ xúc tích và ngắn gọn truy vấn vấn dữ liệu. Các lệnh truy hỏi vấn dữ liệu vốn được viết thẳng làm việc Controller sẽ được đưa vào Repository. khi đó, Controller đang cần sử dụng Repository để can hệ với tài liệu ráng bởi thực hiện trực tiếp. Việc truy hỏi vấn dữ liệu được giấu bí mật trong Repository.thường thì trong Laravel, những cách thức nhỏng find, create, update, delete.. được viết tương đối giống như nhau, chỉ khác nhau trên Model (đối tượng) cần liên can. Vì vậy các đoạn code này đề nghị được gửi vào Repository để tiết kiệm chi phí vấn đề vấn đề code.

Xem thêm: “ Công Nhân Viên Chức Tiếng Anh Là Gì, Cán Bộ Công Nhân Viên Tiếng Anh Là Gì

Lợi ích của Việc sử dụng Repository Patterncố gắng tập trung hóa lô ghích tầm nã vấn tài liệu giúp code dễ gia hạn hơnLogic truy hỏi vấn dữ liệu và súc tích code có thể được bóc biệtGiảm sự trùng lặp codeHạn chế lỗi vào truy vấnDễ dàng thực hiện test

thường thì lúc không thực hiện Repository, code đã như vậy này

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 >); Đoạn code này vẫn đúng. Tuy nhiên, có một vấn đề phải chú ý tại chỗ này chính là Controller được đính thêm chặt vào Model dùng để làm triển khai những thao tác với Thương hiệu tài liệu. Vấn đề này gây ra 2 vụ việc nghiêm trọng như sau:

Chúng ta tất yêu viết Test đến ControllerController đính thêm chặt với ORM Layer, ví như bao hàm thay đổi về cầu trúc bảng, tốt tiến hành chiến thuật nào đó tái kết cấu, bọn họ đã chạm mặt trở ngại trong bài toán đề xuất tìm lại toàn cục các controller với sửa

Đó đó là lí bởi vì bọn họ yêu cầu sử dụng Repository trong ngôi trường đúng theo này. Chúng ta sẽ xây dựng dựng một lớp trung gian giữa Controller và Model, cầm bởi vì Việc Controller ảnh hưởng thẳng cùng với Model, Controller đang thao tác cùng với Repository đã có được đóng gói và những thao tác vào Model. Với bất kì sự biến hóa như thế nào tương quan mang lại Model, chúng ta chỉ việc tìm với sửa lại Repository.Chúng ta đã viết lại code nlỗi sau:

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 >); Sử dụng Repository vào LaravelSau lúc tìm hiểu về những lợi ích của Repository, hiện giờ chúng ta hãy thuộc tiến hành Repository vào Laravel.

Bước 1: Tạo một Repository Interface

Tạo một thư mục phía bên trong folder app đặt tên là Contracts, kế tiếp tạo thành folder Repositories theo kết cấu sau

*

Sau đó tạo nên file BaseRepository.phpĐây là Interface cơ mà bọn họ sẽ áp dụng. Bên trong interface này, chúng ta add vào đoạn code sau:

Tiếp theo trên file UserRepository.php kế thừa BaseRepository.php

Bước 2: Tạo Repository

Tạo một thư mục bên phía trong folderapp đặt tên là Repositories và sản xuất thư mục Eloquents theo kết cấu nlỗi sau:

*

Bên trong thư mục Eloquents sinh sản tệp tin EloquentBaseRepository.php Class này đã implement lại interfaceBaseRepositoryInterface nhưng chúng ta vừa chế tạo sinh hoạt Bước 1.Code trong file EloquentBaseRepository.php như sau:

mã sản phẩm = $model; } public function index() return $this->model->paginate(); public function store($data = ) return $this->model->create($data); public function update($id, $data = ) $record = $this->model->findOrFail($id); return $record->update($data); public function delete($id) return $this->model->destroy($id); public function show($id) return $this->model->findOrFail($id); }Trong file EloquentBaseRepository.php, họ bắt buộc phải lập các method được knhì báo trong interface cùng triển khai bọn chúng, nếu như không vẫn gặp lỗi vào quy trình chạy với sẽ không thực hiện được class cơ mà ta vừa tạo nên. Tiếp theo chế tạo tệp tin EloquentUserRepository thừa kế EloquentBaseRepository cùng class này đã implement lại interface UserRepositoryInterface mà lại bọn họ vừa chế tạo sinh hoạt Cách 1.Code trong tệp tin EloquentUserRepository.php như sau:

Mã Sản Phẩm = $model; } public function all() return $this->model->with(“roles”)->get(); public function find($id) return $this->model->find($id); }

Cách 3: Đăng kí trong app/Providers/AppServiceProvider.php

public function register() $this->app->bind( “AppContractsRepositoriesUserRepository”, “AppRepositoriesEloquentsEloquentUserRepository” );

Bước 4: Sử dụng Repository vào Controller

userRepository = $userRepository; } public function index() $users = $this->userRepository->all(); return view(“users.index”, $users >); }Lời kếtBây giờ đồng hồ bạn đã sở hữu thể tiến hành thành công Repository vào Laravel. Trong một áp dụng bạn cũng có thể thực hiện các Repository khác nhau, toàn bộ Việc bạn phải làm cho là sinh sản một interface cùng sau đó tạo nên repository, tiếp đến ĐK chúng trong Service ProviderTrên đây là khám phá của chính bản thân mình về Repository trong Laravel. Hy vọng nó rất có thể giúp ích được các bạn