《PHP設(shè)計(jì)模式介紹》第十五章 表數(shù)據(jù)網(wǎng)關(guān)模式(2)_PHP教程
推薦:《PHP設(shè)計(jì)模式介紹》第十四章 動(dòng)態(tài)記錄模式到目前為止,您所看到的這些設(shè)計(jì)模式大大提高了代碼的可讀性與可維護(hù)性。然而,在WEB應(yīng)用設(shè)計(jì)與開發(fā)中一個(gè)基本的需求與挑戰(zhàn):數(shù)據(jù)庫應(yīng)用,這些設(shè)計(jì)模式都沒有涉及到。本章與接下來的兩章—
以數(shù)組形式返回記錄集
無論什么時(shí)候?qū)崿F(xiàn)一個(gè)表數(shù)據(jù)網(wǎng)關(guān)類,你都要選擇一種數(shù)據(jù)結(jié)構(gòu)來呈現(xiàn)從相關(guān)方法中獲取的數(shù)據(jù)集。PHP中常用于表示此數(shù)據(jù)結(jié)構(gòu)的術(shù)語是返回行的哈稀向量(以0為起始的數(shù)組),就是一個(gè)關(guān)聯(lián)數(shù)組,由字段=>值成對(duì)組成。
在BookmarkGateway通過ADOconnection獲得這樣一個(gè)數(shù)據(jù)結(jié)構(gòu)是很簡單的,因?yàn)锳DOResultSet::getArray()方法幾乎采用的是相同的術(shù)語來表示(即返回一個(gè)關(guān)聯(lián)數(shù)組)。
例如,這里findAll()可方法返回整個(gè)表數(shù)據(jù)網(wǎng)關(guān)類中表的內(nèi)容。
|
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’]); } } |
返回可迭代的對(duì)象集合
數(shù)組是PHP內(nèi)置的數(shù)據(jù)類型,并且PHP提供了大量的數(shù)組函數(shù),使得在你的程序中使用數(shù)組非常方便。然而,你有可能希望以對(duì)象而不是數(shù)組的形式返回結(jié)果集。實(shí)際上,返回?cái)?shù)據(jù)載體對(duì)象(數(shù)據(jù)的基本容器,也包含業(yè)務(wù)邏輯)的集合是很尋常的,ADOResultSET()方法恰好證實(shí)了這一點(diǎn)。讓我們建立一個(gè)查找方法,可根據(jù)“tag”字段的值來查詢數(shù)據(jù),因?yàn)檫@個(gè)例子基于PHP5,讓我們也要求返回的結(jié)果集可迭代(參見第八章,迭代模式),用PHP的foreach結(jié)構(gòu)就能使用該結(jié)果集了。
分享:《PHP設(shè)計(jì)模式介紹》第十三章 適配器模式接口的改變,是一個(gè)需要程序員們必須(雖然很不情愿)接受和處理的普遍問題。程序提供者們修改他們的代碼;系統(tǒng)庫被修正;各種程序語言以及相關(guān)庫的發(fā)展和進(jìn)化。我孩子的無數(shù)玩具中有一個(gè)簡要地描
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
復(fù)制本頁鏈接| 搜索《PHP設(shè)計(jì)模式介紹》第十五章 表數(shù)據(jù)網(wǎng)關(guān)模式(2)
- 教程說明:
PHP教程-《PHP設(shè)計(jì)模式介紹》第十五章 表數(shù)據(jù)網(wǎng)關(guān)模式(2)
。