发布网友 发布时间:2022-04-10 08:39
共4个回答
懂视网 时间:2022-04-10 13:01
接口摘要 ArrayAccess { /* 方法 */ abstract public boolean offsetExists ( mixed $offset ) abstract public mixed offsetGet ( mixed $offset ) abstract public void offsetSet ( mixed $offset , mixed $value ) abstract public void offsetUnset ( mixed $offset ) }
举个例子
class Test implements ArrayAccess { private $testData = []; public function offsetExists($offset) { echo 'call ' . __METHOD__ . " "; return isset($this->testData[$offset]); } public function offsetGet($offset) { echo 'call ' . __METHOD__ . " "; return $this->testData[$offset]; } public function offsetSet($offset, $value) { echo 'call ' . __METHOD__ . " "; return $this->testData[$offset] = $value; } public function offsetUnset($offset) { echo 'call ' . __METHOD__ . " "; unset($this->testData[$offset]); } }
$obj = new Test();
if (!isset($obj['name'])) { //call Test::offsetExists
$obj['name'] = 'zhangsan'; //call Test::offsetSet
}
echo $obj['name'] . "
"; //call Test::offsetGet
var_dump($obj);
$obj['age'] = 18; //call Test::offsetSet
echo $obj['age'] . "
"; //call Test::offsetGet
unset($obj['address']); //call Test::offsetUnset
ArrayAccess(数组式访问)接口
标签:php arrayaccess
热心网友 时间:2022-04-10 10:09
我可以这么说, 你不太懂php类的用法,你写的test类,当你new下,然后下边的代码和你的类没半点关系,把类删了也不影响你后面的代码,$this->element[$offset]=$value追答SPL提供了多个迭代器类,分别提供了迭代访问、过滤数据、缓存结果、控制分页等功能。http://www.cnblogs.com/ellisonDon/archive/2013/02/26/2932978.html
热心网友 时间:2022-04-10 11:27
为什麼不是数组..
$element是私有变量,
调用的时候就是$this->element;
而[$offset]则是键值。
为什麼不是数组呢.......
打个比方:
1、$test=new Test();//实例化TEST
热心网友 时间:2022-04-10 13:01
$this-> 是访问本对象的成员的语法