像访问数组一样访问对象 发表于 2018-10-11 | 更新于 2018-12-13 | 分类于 php | 阅读次数: 前言通过实现php提供的 ArrayAccess 接口,可以方便的实现像操作数组一样访问对象 ArrayAccess接口php提供的接口,我们看一下要实现的内容 1234567891011<?phpArrayAccess { // isset判断的时候自动调用 abstract public boolean offsetExists ( mixed $offset ) // 获取数组数据的时候自动调用 abstract public mixed offsetGet ( mixed $offset ) // 添加数据的时候自动调用 abstract public void offsetSet ( mixed $offset , mixed $value ) // unset的时候自动调用 abstract public void offsetUnset ( mixed $offset )} 实现接口(例子)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465<?php/** * Created by PhpStorm. * User: wangHan * Date: 2016/10/21 * Time: 14:07 */class Human implements ArrayAccess{ private $elements; public function __construct() { $this->elements = [ "boy" => "male", "girl" => "female" ]; } /** * isset判断的时候调用 * @param {[type]} $offset key键 */ public function offsetExists($offset) { // TODO: Implement offsetExists() method. return isset($this->elements[$offset]); } /** * 获取值的时候调用 * @param {[type]} $offset key键 */ public function offsetGet($offset) { // TODO: Implement offsetGet() method. return $this->elements[$offset]; } /** * 存放值的时候调用 * @param {[type]} $offset key键 */ public function offsetSet($offset, $value) { // TODO: Implement offsetSet() method. $this->elements[$offset] = $value; } /** * unset的时候调用 * @param {[type]} $offset key键 */ public function offsetUnset($offset) { // TODO: Implement offsetUnset() method. unset($this->elements[$offset]); }}$human = new Human();$human['people'] = "boyAndGirl"; // 自动调用offsetSetif(isset($human['people'])) { // 自动调用offsetExists echo $human['boy'];// 自动调用offsetGet echo '<br />'; unset($human['boy']);// 自动调用offsetUnset var_dump($human['boy']);}// // 输出结果 male null 参考 欢迎您扫一扫上面的微信公众号,订阅我的博客! 坚持原创技术分享,您的支持将鼓励我继续创作! 打赏 微信支付 支付宝