在php中,有时候我们想像数组一样使用类来进行增删改查,那么正确的方法应该是让相应类实现
ArrayAccess
接口,重写ArrayAccess
的接口方法。【内容参考php5权威编程】
正常使用
$obj = new TestArrayTypeObj;
echo $obj->name;
想要的效果
$obj = new TestArrayTypeObj;
echo $obj['name'];
具体实现
需要实现的四个接口方法分别是
-
offsetExists
判断索引是否存在 -
offsetGet
取出索引对应的值 -
offsetSet
设置索引对应值 -
offsetUnset
删除索引
class TestArrayTypeObj implements ArrayAccess{
private $arr = ['name'=>'yemin', 'age'=>24];
function offsetExists($name)
{
return array_key_exists($name, $this->arr);
}
function offsetGet($name)
{
return $this->arr[$name];
}
function offsetSet($name, $value)
{
return $this->arr[$name] = $value;
}
function offsetUnset($name)
{
unset($this->arr[$name]);
}
}
当然上述的方法没有进行安全检验,有需要的时候可以再补充,另外内部的$arr
大家可以通过编写类方法或者构造函数将其变成大家需要的数据,或则操作句柄(如数据库操作类/文件)进行对应的增删改查操作;