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 相关文章推荐
从康盛产品(discuz)提取出来的模板类
Jun 28 PHP
PHP静态调用非静态方法的应用分析
May 02 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
PHP循环结构实例讲解
Feb 10 PHP
跟我学Laravel之路由
Oct 15 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
PHP获取一年中每个星期的开始和结束日期的方法
Feb 12 PHP
Thinkphp单字母函数使用指南
May 08 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
详谈php静态方法及普通方法的区别
Oct 04 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
Oct 24 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学习笔记之数组篇
2011/06/28 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
js原型链原理看图说明
2012/07/07 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
angular4中关于表单的校验示例
2017/10/16 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
Numpy中转置transpose、T和swapaxes的实例讲解
2018/04/17 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
英国领先的野生鸟类食品供应商:GardenBird
2018/08/09 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
电大物流学生的自我评价
2013/10/25 职场文书
承诺书的格式范文
2014/03/28 职场文书
学习保证书范文
2014/04/30 职场文书
文明生主要事迹
2014/05/25 职场文书
创建文明城市标语
2014/06/16 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python