PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象

yipeiwu_com7年前PHP代码库
复制代码 代码如下:

interface ArrayAccess
boolean offsetExists($index)
mixed offsetGet($index)
void offsetSet($index, $newvalue)
void offsetUnset($index)

下面的例子展示了如何使用这个接口,例子并不是完整的,但是足够看懂,:->
复制代码 代码如下:

<?php
class UserToSocialSecurity implements ArrayAccess
{
private $db;//一个包含着数据库访问方法的对象
function offsetExists($name)
{
return $this->db->userExists($name);
}
function offsetGet($name)
{
return $this->db->getUserId($name);
}
function offsetSet($name, $id)
{
$this->db->setUserId($name, $id);
}
function offsetUnset($name)
{
$this->db->removeUser($name);
}
}
$userMap = new UserToSocialSecurity();
print "John's ID number is " . $userMap['John'];
?>

实际上,当 $userMap['John'] 查找被执行时,PHP 调用了 offsetGet() 方法,由这个方法再来调用数据库相关的 getUserId() 方法。

相关文章

PHP按指定键值对二维数组进行排序的方法

本文实例讲述了PHP按指定键值对二维数组进行排序的方法。分享给大家供大家参考,具体如下: 问题: 有数组:复制代码 代码如下:array(0=>array('id'=>1,'...

php中全局变量global的使用演示代码

我来给处入行的人讲解一下全局变量global的使用,”全局变量“,这个名词中的全局两个字已经告诉我们这个变量在各个地方都能用,先看一个实例: 复制代码 代码如下: <?php $a...

PHP计算近1年的所有月份

PHP计算近1年的所有月份

话不多说,请看代码:  $z = date('Y-m'); $a = date('Y-m', strtotime('-12 months')); $begin = new...

解析PHP中的内存管理,PHP动态分配和释放内存

解析PHP中的内存管理,PHP动态分配和释放内存

摘要 内存管理对于长期运行的程序,例如服务器守护程序,是相当重要的影响;因此,理解PHP是如何分配与释放内存的对于创建这类程序极为重要。本文将重点探讨PHP的内存管理问题。 一、 内存在...

PHP创建/删除/复制文件夹、文件

学习了PHP的文件编程,其中PHP自身提供了复制文件的函数(copy)。自己也写了一个功能差不多的复制图片的函数,以此在这里记录一下。 在说该函数之前,先介绍一下使用PHP创建/删除文件...