PHP数组式访问接口ArrayAccess用法分析
本文实例讲述了PHP数组式访问接口ArrayAccess用法。分享给大家供大家参考,具体如下:
PHP ArrayAccess接口又叫数组式访问接口,该接口的作用是提供像访问数组一样访问对象的能力。
接口摘要如下:
ArrayAccess{
//获取一个偏移位置的值
abstractpublicmixedoffsetGet(mixed$offset)
//设置一个偏移位置的值
abstractpublicvoidoffsetSet(mixed$offset,mixed$value)
//检查一个偏移位置是否存在
abstractpublicbooleanoffsetExists(mixed$offset)
//复位一个偏移位置的值
abstractpublicvoidoffsetUnset(mixed$offset)
}
例子说明:
data[$key];
}
/**
*以对象方式添加一个数组元素
*
*@accesspublic
*@paramstring数组元素键名
*@parammixed数组元素值
*@returnmixed
*/
publicfunction__set($key,$value){
$this->data[$key]=$value;
}
/**
*以对象方式判断数组元素是否设置
*
*@accesspublic
*@param数组元素键名
*@returnboolean
*/
publicfunction__isset($key){
returnisset($this->data[$key]);
}
/**
*以对象方式删除一个数组元素
*
*@accesspublic
*@param数组元素键名
*/
publicfunction__unset($key){
unset($this->data[$key]);
}
/**
*以数组方式向data数组添加一个元素
*
*@accesspublic
*@abstractingArrayAccess
*@paramstring偏移位置
*@parammixed元素值
*/
publicfunctionoffsetSet($offset,$value){
if(is_null($offset)){
$this->data[]=$value;
}else{
$this->data[$offset]=$value;
}
}
/**
*以数组方式获取data数组指定位置元素
*
*@accesspublic
*@abstractingArrayAccess
*@param偏移位置
*@returnmixed
*/
publicfunctionoffsetGet($offset){
return$this->offsetExists($offset)?$this->data[$offset]:null;
}
/**
*以数组方式判断偏移位置元素是否设置
*
*@accesspublic
*@abstractingArrayAccess
*@param偏移位置
*@returnboolean
*/
publicfunctionoffsetExists($offset){
returnisset($this->data[$offset]);
}
/**
*以数组方式删除data数组指定位置元素
*
*@accesspublic
*@abstractingArrayAccess
*@param偏移位置
*/
publicfunctionoffsetUnset($offset){
if($this->offsetExists($offset)){
unset($this->data[$offset]);
}
}
}
$animal=newArrayAndObjectAccess();
$animal->dog='dog';//调用ArrayAndObjectAccess::__set
$animal['pig']='pig';//调用ArrayAndObjectAccess::offsetSet
var_dump(isset($animal->dog));//调用ArrayAndObjectAccess::__isset
var_dump(isset($animal['pig']));//调用ArrayAndObjectAccess::offsetExists
var_dump($animal->pig);//调用ArrayAndObjectAccess::__get
var_dump($animal['dog']);//调用ArrayAndObjectAccess::offsetGet
unset($animal['dog']);//调用ArrayAndObjectAccess::offsetUnset
unset($animal->pig);//调用ArrayAndObjectAccess::__unset
var_dump($animal['pig']);//调用ArrayAndObjectAccess::offsetGet
var_dump($animal->dog);//调用ArrayAndObjectAccess::__get
?>
以上输出:
booleantrue booleantrue string'pig'(length=3) string'dog'(length=3) null null
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》、《php字符串(string)用法总结》、《php常用函数与技巧总结》、《PHP错误与异常处理方法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。