PHP支持联合数组把整型或字符串的值映射到任何其它的值,这是一个关键字/值得映射模式,像在应用框架中查找字典一样,很是方便。
假设这么个例子,在海里的记录查找某个ID的记录。联合数组中少量数据放在一起,用其值如查字典般确认所需要的数据,非常快捷。但如果数据大,为查找某ID的数据而把所有的数据都加载到一个数组中就不实际了。
实际上,可以使用数组的语法轻松实现。这实际是PHP调用自定义的方法,由此方法执行相关的数据库调用,返回所对应的值。实现这些功能,定义的类需要实现ArrayAccess接口(如下):
bool offsetExists($index);
mixed offsetGet($index);
void offsetSet($index, $new_value);
void offsetUnset($index);
class userMap implements ArrayAccess { private $_db; // 只是简单的举例,这里不详述其实现 function offsetExists($user_name) { return $this->_db->userExists($user_name); } function offsetGet($user_name) { return $this->_db->getUserID($user_name); } function offsetSet($user_name, $id) { $this->_db->setUserID($user_name, $id); } function offsetUnset($user_name) { $this->_db->unsetUser($user_name); } } $userMap = new userMap(); echo "ljlwill's ID is ". $userMap['ljlwill'];
可以看到,对象userMap的使用就像Array一样。在实际开发中,有时使用这重载功能会比冗长调用一个方法更加便捷。