HomeĐời SốngRepository pattern là gì

Repository pattern là gì

15:48, 28/03/2021
Msinh sống đầu

Laravel là 1 trong PHPhường framework, có mã nguồn msinh hoạt cùng miễn giá tiền, được thành lập nhằm mục tiêu cung ứng cùng trở nên tân tiến những ứng dụng, ứng dụng, theo bản vẽ xây dựng MVC. Trong thời điểm này, Laravel đã là PHP framework phổ biến nhất cùng tốt nhất có thể.trong những bí quyết phổ biến tuyệt nhất nhằm xây cất một ứng dụng áp dụng Laravel là Repository Pattern.trước hết, nhằm rất có thể triển khai được Repository Pattern trong Laravel họ cần phải đọc được Repository Pattern là gì cùng ích lợi lúc thực hiện nó.Quý khách hàng đang xem: Repository pattern là gì

Repository Pattern là gì?Lợi ích của bài toán thực hiện Repository Patterntập trung cố gắng hóa logic truy hỏi vấn tài liệu góp code dễ dàng gia hạn hơnLogic truy tìm vấn tài liệu và ngắn gọn xúc tích code có thể được bóc biệtGiảm sự giống nhau codeHạn chế lỗi trong tróc nã vấnDễ dàng triển khai test

thường thì khi không sử dụng Repository, code vẫn 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ụ việc nên chú ý tại đây sẽ là Controller được gắn thêm chặt vào Model dùng để làm thực hiện những làm việc với Cửa hàng tài liệu. Điều này gây nên 2 sự việc cực kỳ nghiêm trọng nlỗi sau:

Chúng ta cần yếu viết Test cho ControllerController đính chặt với ORM Layer, giả dụ gồm có biến hóa về cầu trúc bảng, xuất xắc thực hiện phương án nào kia tái kết cấu, họ sẽ chạm mặt trở ngại trong việc nên search lại toàn thể những controller và sửa

Đó đó là lí vày bọn họ nên thực hiện Repository vào ngôi trường phù hợp này. Chúng ta sẽ xây dựng dựng một tờ trung gian giữa Controller với Model, núm vày việc Controller ảnh hưởng trực tiếp với Model, Controller vẫn thao tác làm việc cùng với Repository đã có được đóng gói cùng các thao tác trong Model. Với bất kể sự đổi khác nào tương quan mang lại Model, bọn họ chỉ cần kiếm tìm cùng sửa lại Repository.Chúng ta sẽ viết lại code như 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 trong LaravelSau lúc khám phá về các ích lợi của Repository, hiện nay chúng ta hãy cùng triển khai Repository vào Laravel.

Cách 1: Tạo một Repository Interface

Tạo một thư mục bên trong thư mục app đánh tên là Contracts, sau đó chế tạo ra folder Repositories theo cấu trúc sau


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

*

Xem thêm: " Khớp Nối Tiếng Anh Là Gì ? Flexible Joint Là Gì? Khớp Nối Tiếng Anh Là Gì Archives

Sau đó chế tạo ra tệp tin BaseRepository.phpĐây là Interface mà lại bọn họ đã sử dụng. Bên trong interface này, các bạn add vào đoạn code sau:

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

Cách 2: Tạo Repository

Tạo một thư mục phía bên trong folderapp viết tên là Repositories với sản xuất thư mục Eloquents theo cấu trúc như sau:


*

Bên vào folder Eloquents chế tạo ra tệp tin EloquentBaseRepository.php Class này đang implement lại interfaceBaseRepositoryInterface mà lại họ vừa tạo nghỉ ngơi Cách 1.Code vào file EloquentBaseRepository.php như sau:

Model = $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, bọn họ đề xuất phải tạo lập những method được khai báo vào interface cùng thực hiện bọn chúng, nếu như không đã gặp gỡ lỗi vào quá trình chạy cùng sẽ không áp dụng được class nhưng ta vừa tạo thành. Tiếp theo tạo thành tệp tin EloquentUserRepository kế thừa EloquentBaseRepository với class này đang implement lại interface UserRepositoryInterface nhưng mà bọn họ vừa tạo sinh hoạt Cách 1.Code vào file EloquentUserRepository.php nhỏng sau:

Model = $model; } public function all() return $this->model->with("roles")->get(); public function find($id) return $this->model->find($id); }

Bước 3: Đăng kí trong app/Providers/AppServiceProvider.php

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

Cách 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 tiếng bạn đã có thể thực hiện thành công xuất sắc Repository vào Laravel. Trong một áp dụng bạn có thể triển khai những Repository khác biệt, toàn bộ Việc bạn phải có tác dụng là chế tác một interface và tiếp nối chế tạo ra repository, tiếp nối đăng ký chúng trong Service ProviderTrên đấy là tìm hiểu của chính bản thân mình về Repository trong Laravel. Hy vọng nó có thể giúp ích được các bạn