1. 程式人生 > >laravel 5.5 倉庫模式 文件之間接口與實現操作

laravel 5.5 倉庫模式 文件之間接口與實現操作

使用方法 行數 實現 pan 註冊 AR reg php 需要

倉庫模式

最直接的意思就是:

Eloquent數據(數據庫)查詢 方便快捷,簡單明了。自己怎麽寫的,就怎麽去調用,完全ok~

本質意思:

倉庫就像是業務內部的數據對象集合,負責協調業務和數據映射層之間的關系,客戶端對象只需要構造一個清晰的查詢請求, 然後提交給倉庫就行了。

倉庫裏的對象可以通過客戶端的請求進行增刪改查,客戶端可以在某個場景下,通過一個簡單的對象集合或者倉庫中映射的代碼實現合適的操作。

倉庫模式把數據訪問邏輯和業務邏輯中實體訪問分開了,數據訪問邏輯和業務邏輯只能通過接口來進行數據操作。

簡單來說, 倉庫模式就是一種存放數據訪問邏輯的容器,它向業務層屏蔽了數據訪問邏輯的細節, 也可以這樣理解, 在不清楚數據層設計結構的情況下, 我們也能按照業務邏輯來訪問數據層。

這樣做(數據訪問層和業務邏輯分離) 有很多好處:

  • 數據訪問邏輯集中管理, 方便維護代碼
  • 業務和數據訪問邏輯可以分開測試
  • 減少重復代碼
  • 減少編程中的錯誤

↓↓↓下面就是怎麽去設計這個倉庫模式了↓↓↓ (?⊙ω⊙)?

先在 Providers(服務商)文件夾下創建一個自己定義的文件比如:RepositoryServiceProvider.php (使用artisan創建比較方便 php artisan make:provider RepositoryServiceProvider)

技術分享圖片

然後要將這個RepositoryServiceProvider.php 的類註冊一下才可以的 -> 在Config目錄下App.php中

技術分享圖片

在App目錄下創建一個自定義的文件夾(最好和Providers 裏面創建的文件名字一樣。方便記憶)

技術分享圖片

在Repository文件目錄下創建相應的文件夾(接口類和接口實現類)

技術分享圖片

在兩個文件夾下面創建相應的文件(先定義接口 -> Interface文件夾下)TestInterface.php

技術分享圖片

Repositories 文件目錄下 TestRepositories.php

技術分享圖片

寫完這兩個文件的之後 接下來就要去第一個創建的文件中的register方法添加一行代碼了 $this->app->bind (RepositoryServiceProvider.php)

這塊部分叫做 “綁定接口”

也就是說ServiceProvider是Laravel IOC容器實現動態換接口實現的地方,所以在這裏綁定一下,在使用的時候,不直接使用接口實現,而是用ioc容器解析接口,它會幫你自動找到對應好的實現。這就意味著,以後需要更換實現,可以在這裏更換

技術分享圖片

接下來就是調用剛才自己寫的接口了 在 Controllers 自己創建的控制器下調用~

技術分享圖片

然後 就完成了 倉庫模式 的使用方法 So Easy~~~

laravel 5.5 倉庫模式 文件之間接口與實現操作