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 相关文章推荐
vBulletin HACK----关于排版的两个HACK
Oct 09 PHP
数字转英文
Dec 06 PHP
Memcache 在PHP中的使用技巧
Feb 08 PHP
PHP 截取字符串专题集合
Aug 19 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
PHP中trim()函数简单使用指南
Apr 16 PHP
你应该知道PHP浮点数知识
May 13 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
PHP+ajax分页实例简析
Dec 07 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 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
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
PHP7 新增常量
2021/03/09 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
8个有意思的JavaScript面试题
2019/07/30 Javascript
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
如何使用python爬取csdn博客访问量
2016/02/14 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
pycharm 安装JPype的教程
2019/08/08 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
2020/05/26 Python
python上selenium的弹框操作实现
2020/07/13 Python
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
英国时尚饰品和发饰购物网站:Claire’s
2017/07/04 全球购物
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
澳大利亚巧克力花束和礼品网站:Tastebuds
2019/03/15 全球购物
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
工作总结与自我评价
2014/09/18 职场文书
主持人开幕词
2015/01/29 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书