《PHP設計模式介紹》第十五章 表資料閘道器模式

2022-04-06 16:11:05 字數 1582 閱讀 5751

使用動態記錄模式對資料庫表進行建立,獲取,更新(通過擴充套件實現刪除)每一行的操作。動態記錄模式是一種簡單的抽象資料庫連線的方式,但是這種簡潔性也正是它的弱點。動態記錄類只處理單一的行,使得它在需要呈現大量資訊的web應用中顯得效率很低,如旅遊預約,**購物等。在這一類應用――幾乎是主流的web應用中,資料集的使用就是更普遍更流行的。

問題 怎樣才能簡單的運算元據庫表與表中的所有記錄?

解決方案

表資料閘道器模式整合了動態記錄模式。實際上,這個新模式的大多數**都借簽於14章動態記錄模式的**(它重用了一樣的db類與bookmark tabel ddl常量,並且也用adodb作為操縱資料的**庫)。然而,表資料閘道器模式集中於整表――記錄集而不是單個的記錄。

樣本**

讓我們從建立操作開始,該操作完成向表中增加新記錄。測試用例函式tabledatagatewaytestcase::testadd() 完成向書籤資料表中增加兩條url資料記錄的步驟要求。它很大程度上參照了14章activerecordtestcase::testadd()方法,但它也其顯著不同的地方,在於引入了乙個新的bookmarkgateway這個表資料閘道器類。

class tabledatagatewaytestcase extends unittestcase

} 類似於動態記錄,表資料閘道器測試用例示例了乙個模板類,並增加一些記錄到資料庫。然而表資料閘道器模的工作物件是整張表,你只需建立乙個該模式物件,並重用該物件對就能向資料表中增加更多的新記錄

這兒是bookmarkgateway乙個可行的實現

class bookmarkgateway

const insert_sql = 「

insert into bookmark (url, name, description, tag, created, updated)

values (?, ?, ?, ?, now(), now())

「;public function add($url, $name, $description, $group)

}}以上**看上去很熟悉,動態記錄模式與表資料閘道器模式的基本框架是相仿的:insert sql 語句,函式引數表,對資料庫錯誤的處理等都與動態記錄模式的add()方法一次處理一條記錄相類似。

建立了實現crud操作的**後,現在來討論如何獲取資料。

測試用例結構

因為表資料閘道器的目的是處理具有多條記錄的資料庫表,你很有可能需要乙個方便有效的方法來初始化表,使得在執行每乙個實驗時資料表都處於乙個已知的狀態。快速的解決方案是為每個實驗建立乙個基類,包括兩個有用的方法:setup()與addseveralbookmark,用來為每個實驗重建已打亂的表和載入一些資料。

如下就是名為basetestcase的類

class basetestcase extends unittestcase

function setup()

function addseveralbookmarks($gateway)

}現在,每乙個測試用例都源自basetestcase並繼承它的構造器,乙個setup()方法與乙個addseveralbookmarks()方法來預裝一些資料。

第十五章預習

public class yuxi15 else 字串的比較 字串1.equals 字串2 比較兩個字串的值是否相同,返回boolean型別的值.如果相同,則返回真值,否則返回假值.字串1.equalsignorecase 字串2 忽略大小寫比較字串1和字串2.如果都相同則返回真值 否則返回假值 改...

learn with python 第十五章 繼承

第十六章 繼承 16.1繼承 物件導向語言所擁有的特性是繼承,繼承指定義乙個新的類擁有原來類的方法。繼承最大的好處就是可以在不改變現存 的情況下新增新的方法,稱之為繼承是因為新定義的類擁有父類的所有方法。新建立的類知之為子類。繼承是乙個功能強大的特性,某些情況下如果沒有繼承,一些層序幾乎無法實現。同...

第十五章 磁碟管理

uuid 掛載點swap 產品型別swap 掛載選項預設值default 預設不檢測,檢測順序 0 0 檢視分割槽 swapon s s表示show 手動掛載 swapon dev sda3 缺點 重啟後就消失,想永久生效,寫配置檔案 解除安裝分割槽 swapoff dev sda3 vim etc...