首页 后端开发 php教程 PHP - ArrayAccess接口详解

PHP - ArrayAccess接口详解

Jul 29, 2016 am 08:55 AM
offset public

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

接口摘要如下:

ArrayAccess {
    // 获取一个偏移位置的值
    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::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

?>
登录后复制

以上输出:

boolean true
boolean true
string 'pig' (length=3)
string 'dog' (length=3)
null
null

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

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

iOS的developer版和public版有什么区别? iOS的developer版和public版有什么区别? Mar 01, 2024 pm 12:55 PM

每年Apple发布新的iOS和macOS大版本之前,用户都可以提前几个月下载测试版抢先体验一番。由于公众和开发人员都使用该软件,所以苹果公司为两者推出了developer和public版即开发者测试版的公共测试版。iOS的developer版和public版有什么区别呢?从字面上的意思来说,developer版是开发者测试版,public版是公共测试版。developer版和public版面向的对象不同。developer版是苹果公司给开发者测试使用的,需要苹果开发者帐号才可以收到下载并升级,是

PHP Notice: Undefined offset解决方法 PHP Notice: Undefined offset解决方法 Jun 25, 2023 am 09:51 AM

PHPNotice:Undefinedoffset是一种常见的PHP程序错误,它表示程序尝试使用数组中不存在的下标,导致程序无法正常运行。这种错误通常会在PHP解释器显示以下警告信息时发生:Notice:Undefinedoffset。下面是一些解决PHPNotice:Undefinedoffset错误的方法:检查代码首先,应该

Java程序展示不同的访问级别 Java程序展示不同的访问级别 Aug 19, 2023 pm 10:09 PM

Accessmodifiersareusedtosetthefeatureofvisibilityofsomeparticularclasses,interfaces,variables,methods,constructors,datamembers,andthesettermethodsinJavaprogramminglanguage.在Java环境中,我们有不同类型的访问修饰符。默认-如果我们声明一个函数,它只会在特定的包中可见。Private-如果我们声明一个函数,它只能在特定的类中可

java中的public修饰符怎么用 java中的public修饰符怎么用 Apr 18, 2023 pm 06:04 PM

1、任何其他类都可以访问被声明为public的类、方法、构造方法和接口。2、若相互访问的public类分布在不同的包中,则需要导入相应public类所在的包。由于类的继承,所有的公共方法和变量都可以由其子类继承。实例publicclassdemo1{publicstaticvoidmain(String[]args){Personp1=newPerson();p1.fn();System.out.println(p1.a);//100System.out.println(p1.scorce);/

Java 函数的访问权限修饰符之 public 使用指南 Java 函数的访问权限修饰符之 public 使用指南 Apr 26, 2024 am 08:39 AM

Javapublic访问权限修饰符允许函数从任何位置访问,用于声明公共API、定义跨包或类共享的工具和实用程序。具体用法如下:语法:public返回值类型函数名称(参数列表){...}场景:需要从任何地方访问的函数、公共API中的方法、共享的工具或实用程序

不同的MySQL分页实现方式 不同的MySQL分页实现方式 Feb 19, 2024 pm 03:26 PM

MySQL分页方法有哪些,需要具体代码示例MySQL是一种关系型数据库管理系统,为了提高查询效率和减少数据传输量,分页查询是一个非常常见的需求。MySQL提供了多种分页方法,下面将详细介绍这些方法,并提供具体的代码示例。使用LIMIT子句分页:LIMIT子句用于限制查询结果的返回行数。它有两个参数,第一个参数指定返回结果的起始偏移位置(从0开始计数),第二个

PHP Notice: Undefined offset:的解决方法 PHP Notice: Undefined offset:的解决方法 Jun 23, 2023 pm 01:26 PM

PHP是一种高性能、开源、跨平台的脚本语言,被广泛应用于Web开发领域。PHP语言的易用性和灵活性为开发者带来了很多便利,但也会遇到一些问题。其中,最常见的错误之一就是“PHPNotice:Undefinedoffset:XXX”。这个错误通常是由PHP程序中访问数组时使用了不存在的键名或下标引起的。当尝试访问数组的一个不存在的元素时,PHP会发出一

PHP Notice: Undefined offset: 4的解决方法 PHP Notice: Undefined offset: 4的解决方法 Jun 22, 2023 pm 04:51 PM

PHPNotice:Undefinedoffset:4的解决方法在使用PHP编写代码的过程中,我们可能会遇到类似“PHPNotice:Undefinedoffset:4”的错误提示。这个错误提示意味着我们在访问一个数组时,尝试访问一个不存在的元素。具体来说,如果我们有一个数组$my_array,其中只有3个元素,而我们尝试访问$my_arra

See all articles