ArrayAccess接口介绍
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-14 16:22:15 浏览: 评论:0
在 PHP5 中多了一系列新接口,在 HaoHappy 翻译的系列文章中,你可以了解到他们的应用,同时这些接口和一些实现的 Class 被归为 Standard PHP Library(SPL),在 PHP5 中加入了很多特性,使类的重载 (Overloading) 得到进一步的加强,ArrayAccess 的作用是使你的 Class 看起来像一个数组 (PHP的数组),这点和 C# 的 Index 特性很相似。
下面是 ArrayAccess 的定义:
- interface ArrayAccess
- boolean offsetExists($index)
- mixed offsetGet($index)
- void offsetSet($index, $newvalue)
- void offsetUnset($index)
由于PHP的数组的强大,很多人在写 PHP 应用的时候经常将配置信息保存在一个数组里,于是可能在代码中到处都是 global,我们换种方式?
如以下代码:
- //Configuration Class
- class Configuration implements ArrayAccess
- {
- static private $config;
- private $configarray;
- private function __construct()
- {
- // init
- $this->configarray = array("Binzy"=>"Male", "Jasmin"=>"Female");
- }
- public static function instance()
- {
- //
- if (self::$config == null)
- {
- self::$config = new Configuration();
- }
- return self::$config;
- }
- function offsetExists($index)
- {
- return isset($this->configarray[$index]);
- }
- function offsetGet($index) {
- return $this->configarray[$index];
- }
- function offsetSet($index, $newvalue) {
- $this->configarray[$index] = $newvalue;
- }
- function offsetUnset($index) {
- unset($this->configarray[$index]);
- }
- }
- $config = Configuration::instance();
- print $config["Binzy"];
正如你所预料的,程序的输出是"Male",假如我们做下面那样的动作:
- $config = Configuration::instance();
- print $config["Binzy"];
- $config['Jasmin'] = "Binzy's Lover";
- // config 2
- $config2 = Configuration::instance();
- print $config2['Jasmin'];
是的,也正如预料的,输出的将是Binzy's Lover,也许你会问,这个和使用数组有什么区别呢?目的是没有区别的,但最大的区别在于封装,最基本的工作就是封装,而封装能有效将变化置于内部,也就是说,当配置信息不再保存在一个 PHP 数组中的时候,是的,应用代码无需任何改变,可能要做的,仅仅是为配置方案添加一个新的策略(Strategy)。
ArrayAccess 在进一步完善中,因为现在是没有办法 count 的,虽然大多数情况并不影响我们的使用.
Tags: ArrayAccess 接口 介绍
- 上一篇:PHP编译问题
- 下一篇:PHP中修改memory_limit限制多种方法
相关文章
- ·php中实现api接口思路介绍(2014-02-10)
- ·php版淘宝网查询商品接口代码(2014-06-17)
- ·PHP实现百度、网易、新浪短网址服务的API接口调用(2014-06-27)
- ·ip地址api第三方jsonp接口整理(2014-07-01)
- ·淘宝IP地址库API接口(PHP)通过ip获取地址信息(2014-07-02)
- ·微信公众平台消息接口(PHP)-官方的Demo有问题(2014-07-29)
- ·php数组 类和对象 接口使用方法(2014-09-08)
- ·php 支付宝接口程序源码(2014-09-09)
- ·php飞信接口实例应用代码(2014-09-09)
- ·php google api 接口程序(2014-09-10)
- ·微信公众平台的开发接口简单例子(2014-09-21)
- ·php新浪微博登录接口实例代码(2014-09-22)
- ·微信公众平台消息接口校验与消息接口响应例子(2014-09-22)
- ·php天翼开放平台短信发送接口实现(2014-09-22)
- ·开发微信公众平台接口参数调试-判断用户行为(2014-09-22)
- ·php中CURL模拟进行微信接口的GET与POST例子(2015-04-04)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)