• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP – ArrayAccess接口详解

php 搞代码 4年前 (2022-01-23) 20次浏览 已收录 0个评论

PHP ArrayAccess接口又叫数组式访问接口,该接口的作用是提供像访问数组一样访问对象的能力。

接口摘要如下:

ArrayAccess {   本@文来源[email protected]搞@^&代*@码网(搞代gaodaima码 // 获取一个偏移位置的值    abstract public mixed offsetGet ( mixed $offset )    // 设置一个偏移位置的值    abstract public void offsetSet ( mixed $offset , mixed $value )    // 检查一个偏移位置是否存在    abstract public boolean offsetExists ( mixed $offset )    // 复位一个偏移位置的值    abstract public void offsetUnset ( mixed $offset )}

例子说明:

<?php/*** ArrayAndObjectAccess* 该类允许以数组或对象的方式进行访问** @author 疯狂老司机*/class ArrayAndObjectAccess implements ArrayAccess {    /**     * 定义一个数组用于保存数据     *     * @access private     * @var array     */    private $data = [];    /**     * 以对象方式访问数组中的数据     *     * @access public     * @param string 数组元素键名     */    public function __get($key) {        return $this->data[$key];    }    /**     * 以对象方式添加一个数组元素     *     * @access public      * @param string 数组元素键名     * @param mixed  数组元素值     * @return mixed     */    public function __set($key,$value) {        $this->data[$key] = $value;    }    /**     * 以对象方式判断数组元素是否设置     *     * @access public     * @param 数组元素键名     * @return boolean     */    public function __isset($key) {        return isset($this->data[$key]);    }    /**     * 以对象方式删除一个数组元素     *     * @access public     * @param 数组元素键名     */    public function __unset($key) {        unset($this->data[$key]);    }    /**     * 以数组方式向data数组添加一个元素     *     * @access public     * @abstracting ArrayAccess     * @param string 偏移位置     * @param mixed  元素值     */    public function offsetSet($offset,$value) {        if (is_null($offset)) {            $this->data[] = $value;        } else {            $this->data[$offset] = $value;        }    }    /**     * 以数组方式获取data数组指定位置元素     *     * @access public        * @abstracting ArrayAccess            * @param 偏移位置     * @return mixed     */    public function offsetGet($offset) {        return $this->offsetExists($offset) ? $this->data[$offset] : null;    }    /**     * 以数组方式判断偏移位置元素是否设置     *     * @access public     * @abstracting ArrayAccess     * @param 偏移位置     * @return boolean     */    public function offsetExists($offset) {        return isset($this->data[$offset]);    }    /**     * 以数组方式删除data数组指定位置元素     *     * @access public     * @abstracting ArrayAccess          * @param 偏移位置     */    public function offsetUnset($offset) {        if ($this->offsetExists($offset)) {            unset($this->data[$offset]);        }    }}$animal = new ArrayAndObjectAccess();$animal->dog = 'dog'; // 调用ArrayAndObjectAccess::__set$animal['pig'] = 'pig'; // 调用ArrayAndObjectAccess::offsetSetvar_dump(isset($animal->dog)); // 调用ArrayAndObjectAccess::__issetvar_dump(isset($animal['pig'])); // 调用ArrayAndObjectAccess::offsetExistsvar_dump($animal->pig); // 调用ArrayAndObjectAccess::__getvar_dump($animal['dog']); // 调用ArrayAndObjectAccess::offsetGetunset($animal['dog']); // 调用ArrayAndObjectAccess::offsetUnsetunset($animal->pig); // 调用ArrayAndObjectAccess::__unsetvar_dump($animal['pig']); // 调用ArrayAndObjectAccess::offsetGetvar_dump($animal->dog); // 调用ArrayAndObjectAccess::__get?>

以上输出:

boolean true
boolean true
string ‘pig’ (length=3)
string ‘dog’ (length=3)
null
null

以上就介绍了PHP – ArrayAccess接口详解,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP – ArrayAccess接口详解
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址