当前位置: 首页 > 后端技术 > PHP

PHP预定义接口——数组访问ArrayAccess

时间:2023-03-30 04:18:19 PHP

PHP有6个预定义接口。其中,数组访问,即ArrayAccess。简单的说,这个接口的作用就是让我们像访问数组一样访问对象。接口源代码:/***提供以数组形式访问对象的接口。*@linkhttp://php.net/manual/en/class.arrayaccess.php*/interfaceArrayAccess{/***偏移量是否存在*/publicfunctionoffsetExists($offset);/***要检索的偏移量*/publicfunctionoffsetGet($offset);/***要设置的偏移量*/publicfunctionoffsetSet($offset,$value);/***offsettounset*/publicfunctionoffsetUnset($offset);}可以看到接口中有四个方法ArrayAccess::offsetExists—检查偏移量是否存在ArrayAccess::offsetGet—获取偏移量的值ArrayAccess::offsetSet——设置一个偏移值ArrayAccess::offsetUnset——重置一个偏移值;echo$obj->attr;//使用->调用对象的属性,没问题attrecho$obj['attr'];//使用['']数组调用对象的属性,报错:CannotuseobjectoftypeObjasarrayError:ImplementArrayAccess";}//获取属性publicfunctionoffsetGet($offset){echo"offsetGet()$offset
";}//设置属性值publicfunctionoffsetSet($offset,$value){echo"offsetSet()$offset=$value
";}//删除属性值publicfunctionoffsetUnset($offset){echo"offsetUnset()$offset
";}}$obj=newObj();isset($obj['attr']);//offsetExists()attr$obj['attr'];//offsetGet()attr$obj['attr']='123';//offsetSet()attr=123unset($obj['attr']);//offsetUnset()在attr框架中的正常使用'123'];//检查属性值是否存在publicfunctionoffsetExists($offset){returnisset($this->data[$offset]);}//获取属性publicfunctionoffsetGet($offset){return$this->data[$抵消];}//设置属性值publicfunctionoffsetSet($offset,$value){$this->data[$offset]=$value;}//删除属性值publicfunctionoffsetUnset($offset){unset($this->data[$offset]);}}$obj=newObj();var_dump(isset($obj['attr']));//truevar_dump($obj['attr']);//123$obj['attr']='321';var_dump($obj['attr']);//321unset($obj['attr']);var_dump(isset($obj['attr']));//错误的