《PHP設計模式介紹》第十五章 表數據網關模式(2)_PHP教程
推薦:《PHP設計模式介紹》第十四章 動態記錄模式到目前為止,您所看到的這些設計模式大大提高了代碼的可讀性與可維護性。然而,在WEB應用設計與開發中一個基本的需求與挑戰:數據庫應用,這些設計模式都沒有涉及到。本章與接下來的兩章—
以數組形式返回記錄集
無論什么時候實現一個表數據網關類,你都要選擇一種數據結構來呈現從相關方法中獲取的數據集。PHP中常用于表示此數據結構的術語是返回行的哈稀向量(以0為起始的數組),就是一個關聯數組,由字段=>值成對組成。
在BookmarkGateway通過ADOconnection獲得這樣一個數據結構是很簡單的,因為ADOResultSet::getArray()方法幾乎采用的是相同的術語來表示(即返回一個關聯數組)。
例如,這里findAll()可方法返回整個表數據網關類中表的內容。
|
class BookmarkGateway { |
| class TableDataGatewayTestCase extends BaseTestCase { // ... function testFindAll() { $gateway = new BookmarkGateway(DB::conn()); $this->addSeveralBookmarks($gateway); $result = $gateway->findAll(); $this->assertIsA($result, ‘Array’); $this->assertEqual(5, count($result)); } } |
如果你想做得更多,你可以檢查一下返回的每一行。
|
class TableDataGatewayTestCase extends BaseTestCase { |
| class TableDataGatewayTestCase extends BaseTestCase { // ... function testFindAll() { $gateway = new BookmarkGateway(DB::conn()); $this->addSeveralBookmarks($gateway); $result = $gateway->findAll(); // ... $this->assertEqual(‘PHP homepage’, $result[1][‘name’]); $this->assertEqual(‘http://google.com/’, $result[3][‘url’]); } } |
返回可迭代的對象集合
數組是PHP內置的數據類型,并且PHP提供了大量的數組函數,使得在你的程序中使用數組非常方便。然而,你有可能希望以對象而不是數組的形式返回結果集。實際上,返回數據載體對象(數據的基本容器,也包含業務邏輯)的集合是很尋常的,ADOResultSET()方法恰好證實了這一點。讓我們建立一個查找方法,可根據“tag”字段的值來查詢數據,因為這個例子基于PHP5,讓我們也要求返回的結果集可迭代(參見第八章,迭代模式),用PHP的foreach結構就能使用該結果集了。
分享:《PHP設計模式介紹》第十三章 適配器模式接口的改變,是一個需要程序員們必須(雖然很不情愿)接受和處理的普遍問題。程序提供者們修改他們的代碼;系統庫被修正;各種程序語言以及相關庫的發展和進化。我孩子的無數玩具中有一個簡要地描
- 相關鏈接:
- 教程說明:
PHP教程-《PHP設計模式介紹》第十五章 表數據網關模式(2)
。