数组式方式访问对象(ArrayAccess)

来源:互联网 发布:mac qq远程控制在哪 编辑:程序博客网 时间:2024/06/07 04:45

ArrayAccess简介:提供像访问数组一样访问对象的能力的接口。

//接口摘要:↓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 Foo 使用数组语法访问对象 * 用数组的语法来读写数据,使用SPL的ArrayAccess接口。 * * offsetExists (指定一个元素是否已定义) * offsetGet    (获取一个元素的值) * offsetSet    (将元素设置为一个新值) * offsetUnset  (删除一个元素及值) * */class Foo implements ArrayAccess{    protected $arrays = array();    public function __construct($arr)    {        // 初始化数组        $this->arrays = $arr;    }    // isset元素时触发该方法    public function offsetExists($offset)    {        return isset($this->arrays[$offset]);    }    // 获取一个数组元素时触发    public function offsetGet($offset)    {        return $this->arrays[$offset];    }    // 设置一个数组元素时触发    public function offsetSet($offset, $value)    {        if(is_null($offset)) {            $this->arrays[] = $value;        }else{            $this->arrays[$offset] = $value;        }    }    // unset一个数组元素时触发    public function offsetUnset($offset)    {        unset($this->arrays[$offset]);    }}
$arr = array('张三','李四','王五');$Foo = new Foo($arr);   // 初始化并传递数组isset($Foo[1]);         // 检测数组元素是否否在 自动调用offsetExistsecho $Foo[1];           // 获取数组元素         自动调用offsetGet$Foo[] = 'new element'; // 新增数组元素         自动调用offsetSetunset($Foo[1]);         // 删除数组元素         自动调用offsetUnset

相关文档:
http://php.net/manual/zh/class.arrayaccess.php
http://moell.cn/article/29

阅读全文
0 0
原创粉丝点击