PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象


Posted in PHP onOctober 12, 2010
interface ArrayAccess 
boolean offsetExists($index) 
mixed offsetGet($index) 
void offsetSet($index, $newvalue) 
void offsetUnset($index)

下面的例子展示了如何使用这个接口,例子并不是完整的,但是足够看懂,:->
<?php 
class UserToSocialSecurity implements ArrayAccess 
{ 
private $db;//一个包含着数据库访问方法的对象 
function offsetExists($name) 
{ 
return $this->db->userExists($name); 
} 
function offsetGet($name) 
{ 
return $this->db->getUserId($name); 
} 
function offsetSet($name, $id) 
{ 
$this->db->setUserId($name, $id); 
} 
function offsetUnset($name) 
{ 
$this->db->removeUser($name); 
} 
} 
$userMap = new UserToSocialSecurity(); 
print "John's ID number is " . $userMap['John']; 
?>

实际上,当 $userMap['John'] 查找被执行时,PHP 调用了 offsetGet() 方法,由这个方法再来调用数据库相关的 getUserId() 方法。
PHP 相关文章推荐
有关 PHP 和 MySQL 时区的一点总结
Mar 26 PHP
php 定界符格式引起的错误
May 24 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
php使用json_encode对变量json编码
Apr 07 PHP
用PHP代替JS玩转DOM的思路及示例代码
Jun 15 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
php遍历树的常用方法汇总
Jun 18 PHP
PHP实现多文件上传的方法
Jul 08 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
示例详解Laravel的注册重构
Aug 14 PHP
YII框架中搜索分页jQuery写法详解
Dec 19 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
php中去除所有js,html,css代码
Oct 12 #PHP
PHP入门学习笔记之一
Oct 12 #PHP
PHP 显示客户端IP与服务器IP的代码
Oct 12 #PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
Oct 12 #PHP
使用PHP 5.0创建图形的巧妙方法
Oct 12 #PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 #PHP
献给php初学者(入门学习经验谈)
Oct 12 #PHP
You might like
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
php 获取远程网页内容的函数
2009/09/08 PHP
PHP array_multisort()函数的使用札记
2011/07/03 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
jQuery参数列表集合
2011/04/06 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
表单元素的submit()方法和onsubmit事件应用概述
2013/02/01 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
基于python中__add__函数的用法
2019/11/25 Python
如何基于pandas读取csv后合并两个股票
2020/09/25 Python
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
2015年暑期社会实践方案
2015/07/14 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle