《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)。