php使用数组语法访问对象
有一个对象,不过希望能用数组的语法来读写数据,可以使用 实现SPL的ArrayAccess接口来解决。
使用场景:加载配置文件类。larvel框架加载配置文件就这利用数组来操作对象。
数组式访问Object ,必须实现下面4个方法
/*
* offsetExists (指定一个元素是否已定义)
* offsetGet (获取一个元素的值)
* offsetSet (将元素设置为一个新值)
* offsetUnset (删除一个元素及值)
*/
class FakeArray implements ArrayAccess { private $elements; public function __consturct(){
//初始化一个新数组
$this->elements = [];
} //isset 时候触发
public function offsetExists($offset)
{
return isset($this->elements[$offset]);
} //获取一个元素时触发
public function offsetGet($offset)
{
return $this->elements[$offset];
} //设置一个元素时触发
public function offsetSet($offset, $value)
{
return $this->elements[$offset] = $value;
} //unset时触发
public function offsetUnset($offset)
{
unset($this->elements[$offset]);
}
} $arr = new FakeArray(); $arr['animal'] = 'rabbit';
print_r($arr); if (isset($arr['animal']) && $arr['animal']== 'rabbit')
unset($arr['animal']);
从上面代码可以看到:
每一个操作会调用一个方法
/*
* $arr['animal'] = 'rabbit' 触发offsetSet
* isset($arr['animal']) 触发offsetExists
* $arr['animal'] == 'rabbit' 触发offsetGet
* unset($arr['animal']) 触发offsetUnset
*/
php使用数组语法访问对象的更多相关文章
- 数组式访问-ArrayAccess
以前对ArrayAccess不是很熟悉,现在整理下下有关ArrayAccess相关的知识,ArrayAccess接口就是提供像访问数组一样访问对象的能力的接口. 接口内容如下: ArrayAccess ...
- ArrayAccess(数组式访问)
实现该接口后,可以像访问数组一样访问对象. 接口摘要: ArrayAccess { abstract public boolean offsetExists ( mixed $offset ) abs ...
- JSON语法、对象、遍历数组的区别和基本操作
JSON 语法规则 JSON 语法是 javascript 对象表示语法的子集. 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称/值对 JSON 数据的书写格式是: ...
- js中如何访问对象和数组
js中如何访问对象和数组 一.总结 一句话总结:js访问对象点和中括号,访问数组的话就是中括号 对象 . [] 数组 [] 1.js访问对象的两种方式? . [] 可以使用下面两种方式访问对象的属性和 ...
- javascript对象属性和数组的访问
javascript对象属性的访问 假如有对象test:var test = { "a":1, "b":2};直接访问对象test的属性a的值,有两种方法: ...
- YII框架中可以使用foreach遍历对象以及可以使用数组形式直接访问对象的原因
YII框架中可以使用foreach遍历对象以及可以使用数组形式直接访问对象的原因在YII框架的使用过程中,我们可以使用foreach直接遍历findAll等方法返回的对象的属性为什么呢?其实这与CMo ...
- vue 绑定class、v-bind:style(对象语法、数组语法)
绑定 HTML Class 我们可以传给 v-bind:class 一个对象,以动态地切换 class: 内联样式在模板里 <div id="div1" :class=&qu ...
- Yii的学习(2)--数据访问对象 (DAO)
摘自Yii官网:http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.dao Yii提供了强大的数据库编程支持.Yii数据访问对象(DAO) ...
- JavaScript学习笔记(6)——JavaScript语法之对象
JavaScript 中的所有事物都是对象:字符串.数字.数组.日期,等等. 在 JavaScript 中,对象是拥有属性和方法的数据. 属性是与对象相关的值. 方法是能够在对象上执行的动作. 提示: ...
随机推荐
- js之ActiveX控件使用说明 new ActiveXObject()
什么是 ActiveX 控件? ActiveX 控件广泛用于 Internet.它们可以通过提供视频.动画内容等来增加浏览的乐趣.不过,这些程序可能出问题或者向您提供不需要的内容.在某些情况下,这些程 ...
- 在控制终端输入AT命令
控制台终端输入AT命令到smd8,步骤如下: 1. 先执行命令 cat /dev/smd8 & 2. 再执行 echo -e "ati\r\n" > /dev ...
- Vue 封装js
//封装模块化文件 新建的.js文件 var storage = { set(key, value) { localStorage.setItem(key, JSON.stringify(value) ...
- JavaScript中的数组和字符串
知识内容: 1.JavaScript中的数组 2.JavaScript中的字符串 一.JavaScript中的数组 1.JavaScript中的数组是什么 数组指的是数据的有序列表,每种语言基本上都有 ...
- Nop权限的使用
1.首先后台Admin--->siteMap中添加: <siteMapNode SystemName="我是系统名" nopResource="显示的中文名称 ...
- springboot sybase 数据库
依赖:(驱动) <!-- https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds --> <dependency&g ...
- vi和vim的三种模式
1.一般模式 用vi 或vim 命令 ——>一般模式 2. 插入模式 i,o,a,r 及其各自大写 ——>插入模式 一般用 i 3.命令行模式 用命令来完成 读取,存盘,替换,离开vim ...
- discuz 标签详解
Discuz 模板标签说明 Discuz! 的模板采用近似 PHP 表达式的语法,基本都是可识别的HTML,但涉及到变量和动态内容时,基本形式下: <!-{ 代码内容 }-> 逻辑元素包围 ...
- 可视化库-seaborn-回归分析绘图(第五天)
1. sns.regplot() 和 sns.lmplot() 绘制回归曲线 import numpy as np import pandas as pd from scipy import stat ...
- 相对固定位置 relative absolute
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...