Laravel Repository 模式
Repository 模式
為了保持程式碼的整潔性和可讀性,使用Repository Pattern
是非常有用的。事實上,我們也不必僅僅為了使用這個特別的設計模式去使用Laravel
,然而在下面的場景下,我們將使用OOP
的框架Laravel
去展示如何使用repositories
使我們的 去展示如何使用
黑
不使用
repositories
其實使用
Repositories並不是必要的,在你的應用中你完全可以不使用這個設計模式的前提下完成絕大多數的事情,然而隨著時間的推移你可能把自己陷入一個死角,例如不選擇使用
Repositories
會使你的應用測試很不容易,(swapping out implementations)具體的實作將會變的很複雜,下面我們來看一個例子。 HousesController.php
<?php class HousesController extends BaseController { public function index() { $houses = House::all(); return View::make('houses.index',compact('houses')); } public function create() { return View::make('houses.create'); } public function show($id) { $house = House::find($id); return View::make('houses.show',compact('house')); } }
這是一個很典型的一段程式碼使用
Eloquent和資料庫交互,這段程式碼工作的很正常,但是將雜的。在此我們可以注入一個
repository建立一個解耦類型的程式碼版本,這個解耦的版本程式碼可以讓後續程式的具體實作更加簡單。
使用
repositories
其實完成整個
repository
1.創建
Repository
首先我們需要在
app
資料夾建立自己Repository 資料夾
repositories,然後要設定資料夾對應的每個檔案都必須設定對應的命名空間。
2: 創建對應的
Interface
第二步創建對應的接口,其決定著我們的
repository
類必須要實現的相關方法,如下例所示,在此再次強調的是命名空間一定要記得加上。 HouseRepositoryInterface.php
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><?php namespace App\Repositories;
interface HouseRepositoryInterface {
public function selectAll();
public function find($id);
}
</pre><div class="contentsignin">登入後複製</div></div>
Repository
類現在我們可以創建我們
repository
類現在我們可以創建我們
repository
類來給我們做這個檔案多數的資料庫查詢都放進去,不論多麼複雜。如下面的例子DbHouseRepository.php
<?php namespace App\Repositories; use House; class DbHouseRepository implements HouseRepositoryInterface { public function selectAll() { return House::all(); } public function find($id) { return House::find($id); } }
<code><span><span> </span></span></code>
登入後複製
4:創建後端服務提供<code><span><span> </span></span></code>
首先你需要理解所謂服務提供,請參考手冊服務提供者
🜎
當然你也可以新建一個資料夾主要放我們的provider相關檔案。
上面一段程式碼主要說的是,當你在
controller層使用類型提示
HouseRepositoryInterface,我們知道你將會使用
DbHouseRepository.
DbHouseRepository.
5:更新你的。在程式碼中,我們已經實現了一個依賴注入,但如果我們要使用在此我們是需要手動去寫的,為了更為方面,我們需要增加這個providers
到app/config/app.php 中的 providers
數組裡面,只需要在最後加上AppRepositoriesBackendServiceProvider::class,
6:最後使用依賴注入更新你的controller
當我們完成上面的那些內容之後,我們在簡單的調用方法取代先前的複雜的資料庫調用,如下面內容:
HousesController.php
<?php namespace App\Repositories; use IlluminateSupportSeriveProvider; class BackSerivePrivider extends ServiceProvider { public function register() { $this->app->bind('App\Repositories\HouseRepositoryInterface', 'App\Repositories\DbHouseRepository'); } }
以上就介紹了Laravel Repository 模式,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

function是函數的意思,是一段具有特定功能的可重複使用的程式碼區塊,是程式的基本組成單元之一,可以接受輸入參數,執行特定的操作,並傳回結果,其目的是封裝一段可重複使用的程式碼,提高程式碼的可重複使用性和可維護性。

每年Apple發布新的iOS和macOS大版本之前,用戶都可以提前幾個月下載測試版搶先體驗一番。由於大眾和開發人員都使用該軟體,蘋果公司為兩者推出了developer和public版即開發者測試版的公共測試版。 iOS的developer版和public版有什麼差別呢?從字面上的意思來說,developer版是開發者測試版,public版是公共測試版。 developer版和public版面向的物件不同。 developer版是蘋果公司給開發者測試使用的,需要蘋果開發者帳號才能收到下載併升級,是

在本文中,我們將了解enumerate()函數以及Python中「enumerate()」函數的用途。什麼是enumerate()函數? Python的enumerate()函數接受資料集合作為參數並傳回一個枚舉物件。枚舉物件以鍵值對的形式傳回。 key是每個item對應的索引,value是items。語法enumerate(iterable,start)參數iterable-傳入的資料集合可以作為枚舉物件傳回,稱為iterablestart-顧名思義,枚舉物件的起始索引由start定義。如果我們忽

MySQL.proc表的功能與功能詳解MySQL是一種流行的關係型資料庫管理系統,開發者在使用MySQL時常常會涉及到預存程序(StoredProcedure)的建立與管理。而MySQL.proc表則是一個非常重要的系統表,它儲存了資料庫中所有的預存程序的相關信息,包括預存程序的名稱、定義、參數等。在本文中,我們將詳細解釋MySQL.proc表的作用與功能

Vue.use函數的用法和作用Vue是一款流行的前端框架,它提供了許多有用的功能和功能。其中之一就是Vue.use函數,它可以讓我們在Vue應用中使用插件。本文將介紹Vue.use函數的用法和作用,並且提供一些程式碼範例。 Vue.use函數的基本用法非常簡單,只需在Vue實例化之前呼叫它,並傳入要使用的插件作為參數。以下是一個簡單的範例://引入並使用插件

clearstatcache()函數用於清除檔案狀態快取。 PHP快取以下函數傳回的資訊−stat()lstat()file_exists()is_writable()is_readable()is_executable()is_file()is_dir()filegroup()fileowner()filesize()filetype()fileperms()這樣做是為了提供更好的性能。語法voidclearstatecache()參數NA傳回值clearstatcache(

file_exists方法檢查檔案或目錄是否存在。它接受要檢查的檔案或目錄的路徑作為參數。以下是它的用途-當您需要在處理之前知道文件是否存在時,它非常有用。這樣,在建立新檔案時使用此函數即可知道該檔案是否已存在。語法file_exists($file_path)參數file_path-設定要檢查是否存在的檔案或目錄的路徑。必需。返回file_exists()方法返回。如果檔案或目錄存在,則傳回TrueFalse,如果檔案或目錄不存在範例讓我們看一個檢查「candidate.txt」檔案和即使文件

隨著網際網路的發展,SOA(服務導向的架構)成為了當今企業級系統中的重要的技術架構。 SOA架構中的服務可以重複使用、重組和擴展,同時也能夠簡化系統開發和維護的過程。 PHP作為一種被廣泛使用的Web程式語言,也提供了一些實作SOA的函數函式庫。接下來,我們將詳細介紹如何在PHP中使用SOA函數。一、SOA的基本概念SOA是分散式系統開發的思想與架構
