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 相关文章推荐
PHPShop存在多个安全漏洞
Oct 09 PHP
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 PHP
PHP安全配置详细说明
Sep 26 PHP
apache php模块整合操作指南
Nov 16 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
PHP实现ftp上传文件示例
Aug 21 PHP
php字符串的替换,分割和连接方法
May 23 PHP
PHP入门教程之数学运算技巧总结
Sep 11 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 PHP
php判断IP地址是否在多个IP段内
Aug 18 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
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
vue使用原生swiper代码实例
2020/02/05 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
2020/08/20 Javascript
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
Python短信轰炸的代码
2020/03/25 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
《掌声》教学反思
2014/02/23 职场文书
化学专业自荐信
2014/05/28 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
golang json数组拼接的实例
2021/04/28 Golang
详解Python类和对象内容
2021/06/22 Python