儲存庫一般來說負責處理資料來源操作。儲存庫為我們提供了一種集中的方式來管理與資料庫相關的操作,增加了程式碼的可讀性,並且可以在發生異常時輕鬆追蹤異常。它還幫助我們將程式碼與領域層解耦。它可以是分隔域和資料庫操作的介面、元件或類別。在本主題中,我們將了解 PHP 儲存庫。
廣告 該類別中的熱門課程 PHP 開發人員 - 專業化 | 8 門課程系列 | 3次模擬測驗開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
在其中,我們可以定義更相同的資料庫操作,負責從資料庫取得資料、更新資料和刪除資料。我們如何定義這一點請參見下文;
interface name_oF_interface { // logic goes here. Can define the methods which are needed to haled the db operations }
在上面的語法中,我們定義了一個包含不同方法的介面。這個介面關鍵字後面是我們想要提供的介面的名稱。讓我們來看一種練習文法,以便更好地理解文法,如下所示;
interface DemoInteface { public function cerate(Object $obj); public function delete($id); public function update(Object $obj); //many more methods we can define here. // but we need to provide their implementation as well in the class which is using this repo. }
在上面的語法中,我們定義了新的資料庫操作方法,我們將在不同的類別中提供它們的實作。
到目前為止,我們知道儲存庫用於處理資料庫操作。所以現在我們可以說它像任何其他語言一樣充當資料層和域物件之間的層。它帶來了許多好處,因為它為我們提供了資料操作的集中管理。此外,儲存庫還幫助我們處理實體;我們可以取得這些實體並將它們載入到網域物件中。我們也可以更改這些實體。
使用儲存庫執行的基本操作如下;
1.我們可以從資料庫中取得實體並將它們儲存在記憶體中,或者我們可以將這些實體物件轉換為領域物件以便更好地修改,因為始終建議不要直接修改實體物件。
2.從資料庫中取得後,我們可以更新這些物件並將它們傳送到僅使用儲存庫儲存到資料庫中。整個過程可以透過使用事務來完成。如果在進行資料庫互動時出現任何異常,我們可以回滾整個交易。
3.我們可以輕鬆處理異常,因為所有異常只會在持久層出現。
當我們使用儲存庫模式時,我們有很多層,處理得非常正確。例如,我們有不同的層,例如:
現在我們將舉一個例子,我們將根據它們定義一些類別和儲存庫,並嘗試了解它們實際上是如何運作的。另外,我們將看到儲存庫的流程,如下所示;
假設我們要反對這裡一個是Buyer,另一個是Order。該訂單將包括買家資料和其他信息,例如我們希望送貨的地址、訂單名稱等。所以我們將其分為三層,如下所述;
1。域層:我們將建立所有可用類別的域物件。在我們的範例中,它是 Buyer an Order 類別。這兩個類別都將屬於儲存庫模式的域層。我們將使用這些物件來保存資料庫中的資料。
2。持久層:這個持久層就是我們可以說的儲存庫。在此級別,只有我們創建存儲庫,它將再次與資料庫互動。但為此,我們將創建一個接口,其中包含處理買家和訂單之間的操作所需的所有方法。該層還將幫助我們追蹤異常,並且它們將僅屬於持久層。
課程:
買家類別
class Buyer { public $id; public $gender; public $email; public $firstName; public $lastName; }
訂單類
class Order { public $id; public $order_name; public $order_description; public $amount; public $quantity; public $buyerid; }
儲存庫:
inteface OrderRepo { // we can define our methods here according to requirement. }
正如您在上面的邏輯中看到的,我們正在處理不同的層。這就是 PHP 中儲存庫模式的工作原理。它與其他語言非常相似。
在此範例中,我們將建立一個儲存庫來呼叫不同的方法。但到目前為止,我們這裡還沒有使用 db。因此,我們將在呼叫 Repository 的方法後列印訊息。
員工類別:
class Employee { public $id; public $emp_first_name; public $emp_last_name; public $gender; public $email; public $city; } interface EmployeeRepo { public function findById($id); public function create(Employee $emp); public function delete(Employee $emp); public function update(Employee $emp); }
Repository implementations for the employee :
class SQLEmployeeRepo implements EmployeeRepo { public function create(Employee $emp) { print("saving employee data here !!"); } public function findById($id) { print("finding employee data here !!"); } public function delete(Employee $emp) { print("deleting employee data here !!"); } public function update(Employee $emp) { print("updating employee data here !!"); } }
Employee Controller class:
class EmployeeControllerDemo { public function create(EmployeeRepo $repo) { $emp = new Employee; $user->emp_first_name = $_POST['emp_first_name']; $user->emp_last_name = $_POST['emp_last_name']; $user->city = $_POST['city']; $repo->create($user); // here we are creating emp object and calling creae method. } }
Output :
The repository makes our code centralized, more readable, maintainable, and easy to understand. By using the repository, we can easily track the exception and errors if they occurred at the repository level while interacting with the database. It also helps us to decouple our code with less dependency on each other. It acts as a thin layer between the db and persistence layer; some called it part of persistence only.
以上是PHP 儲存庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!