美文网首页
如何以像数组一样的方式使用一个类

如何以像数组一样的方式使用一个类

作者: 叶敏 | 来源:发表于2018-03-23 20:24 被阅读0次

在php中,有时候我们想像数组一样使用类来进行增删改查,那么正确的方法应该是让相应类实现ArrayAccess接口,重写ArrayAccess的接口方法。【内容参考php5权威编程】

正常使用

$obj = new TestArrayTypeObj;
echo $obj->name;

想要的效果

$obj = new TestArrayTypeObj;
echo $obj['name'];

具体实现

需要实现的四个接口方法分别是

  • offsetExists判断索引是否存在
  • offsetGet取出索引对应的值
  • offsetSet设置索引对应值
  • offsetUnset删除索引
class TestArrayTypeObj implements ArrayAccess{

    private $arr = ['name'=>'yemin', 'age'=>24];

    function offsetExists($name)
    {
        return array_key_exists($name, $this->arr);
    }

    function offsetGet($name)
    {
        return $this->arr[$name];
    }

    function offsetSet($name, $value)
    {
        return $this->arr[$name] = $value;
    }

    function offsetUnset($name)
    {
        unset($this->arr[$name]);
    }
}

当然上述的方法没有进行安全检验,有需要的时候可以再补充,另外内部的$arr大家可以通过编写类方法或者构造函数将其变成大家需要的数据,或则操作句柄(如数据库操作类/文件)进行对应的增删改查操作;

相关文章

  • 如何以像数组一样的方式使用一个类

    在php中,有时候我们想像数组一样使用类来进行增删改查,那么正确的方法应该是让相应类实现ArrayAccess接口...

  • [].slice.call(arguments)原理解析

    javascirpt的类数组对象可以像数组一样使用for循环遍历,但是却不能调用数组原型链的方法,为了让类数组对象...

  • 2021-04-16

    javascirpt的类数组对象可以像数组一样使用for循环遍历,但是却不能调用数组原型链的方法,为了让类数组对象...

  • 索引器的作用

    可以使得类和实例能够像数组那样使用一样,又称为带参属性 staticvoidmain(string[] args)...

  • DOM库

    使用闭包的方式来封装:功能,兼容性的处理类数组转数组:markArray-----类数组有两种:arguments...

  • 使用【Feign】调用接口

    使用feign能像使用service类一样的方式调用接口,使调用简单明了。文档:https://cloud.spr...

  • vue 中使用 jsx 总结

    vue 中使用 jsx 调用方式 标签函数组件// 模式1: 类式函数组件const Sub = { fun...

  • 【C++ Templates(25)】表达式模板

    表达式模板是为了支持一种数值数组的类引入的技术。如希望可以像内置类型一样对数组进行下列操作 要获得高效率,同时支持...

  • Unreal4使用数组0015bate1

    使用数组 展示使用数组保存变量集合的各种方法。 如您不熟悉编程术语,理解 数组 的最佳方式是将其看作包含在单一实体...

  • [C++之旅] 14 对象成员与对象数组

    [C++之旅] 14 对象成员与对象数组 对象数组 使用方式 从栈中实例化对象数组类名 对象名[对象个数];对象名...

网友评论

      本文标题:如何以像数组一样的方式使用一个类

      本文链接:https://www.haomeiwen.com/subject/intfcftx.html