以数组形式返回记录集
无论什么时候实现一个表数据网关类,你都要选择一种数据结构来呈现从相关方法中获取的数据集。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设计模式介绍 第一章 编程惯用法
PHP设计模式介绍 第二章 值对象模式
PHP设计模式介绍 第三章 工厂模式
PHP设计模式介绍 第四章 单件模式
PHP设计模式介绍 第五章 注册模式
PHP设计模式介绍 第六章 伪对象模式
PHP设计模式介绍 第七章 策略模式
PHP设计模式介绍 第八章 迭代器模式