ArrayAccess 接口介绍
2005-04-24 23:04
507 查看
在 PHP5 中多了一系列新接口。在 HaoHappy 翻译的你可以了解到他们的应用。同时这些接口和一些实现的 Class 被归为 Standard PHP Library(SPL)。在 PHP5 中加入了很多特性,使类的重载 (Overloading) 得到进一步的加强。ArrayAccess 的作用是使你的 Class 看起来像一个数组(PHP 的数组)。这点和 C# 的 Index 特性很相似。
下面是 ArrayAccess 的定义:
由于PHP的数组的强大,很多人在写 PHP 应用的时候经常将配置信息保存在一个数组里。于是可能在代码中到处都是 global。我们换种方式?
如以下代码:
正如你所预料的,程序的输出是"Male"。
如果我们做下面那样的动作:
是的,也正如预料的,输出的将是Binzy's Lover。
也许你会问,这个和使用数组有什么区别呢?目的是没有区别的,但最大的区别在于封装。OO的最基本的工作就是封装,而封装能有效将变化置于内部。也就是说,当配置信息不再保存在一个PHP数组中的时候,是的,应用代码无需任何改变。可能要做的,仅仅是为配置方案添加一个新的策略(Strategy)。:
ArrayAccess在进一步完善中,因为现在是没有办法count的:,虽然大多数情况并不影响我们的使用。
Binzy Wu <binzywu@gmail.com>
2004-11-28
参考:
1. 《PHP5 Power Programming》
2. 《设计模式》
3. 《面向对象分析与设计》
下面是 ArrayAccess 的定义:
interface ArrayAccess boolean offsetExists($index) mixed offsetGet($index) void offsetSet($index, $newvalue) void offsetUnset($index) |
如以下代码:
//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"]; |
如果我们做下面那样的动作:
$config = Configuration::instance(); print $config["Binzy"]; $config['Jasmin'] = "Binzy's Lover"; // config 2 $config2 = Configuration::instance(); print $config2['Jasmin']; |
也许你会问,这个和使用数组有什么区别呢?目的是没有区别的,但最大的区别在于封装。OO的最基本的工作就是封装,而封装能有效将变化置于内部。也就是说,当配置信息不再保存在一个PHP数组中的时候,是的,应用代码无需任何改变。可能要做的,仅仅是为配置方案添加一个新的策略(Strategy)。:
ArrayAccess在进一步完善中,因为现在是没有办法count的:,虽然大多数情况并不影响我们的使用。
Binzy Wu <binzywu@gmail.com>
2004-11-28
参考:
1. 《PHP5 Power Programming》
2. 《设计模式》
3. 《面向对象分析与设计》
相关文章推荐
- Java程序执行超时——Future接口介绍
- Lock接口API简单介绍
- 介绍几款Magento国内支付接口
- GMII,RGMII,SGMII,TBI,RTBI接口信号及时序介绍
- dbus通信与接口介绍
- servlet-api的基本类和其接口的介绍
- 【php语法】实现ArrayAccess接口,以数组的形式访问对象
- 有关松散耦合与接口的概念介绍
- PHP的ArrayAccess接口 像数组一样来访问你的PHP对象
- -02-Xilinx的SerDes接口介绍【Xilinx-LVDS读写功能实现】
- CAN总线基础(二)——CAN总线物理层介绍(物理介质及接口介绍)
- 如何删除要素类 IFeatureWorkspace 接口介绍(1)
- 全面介绍路由器接口及连接
- android MVC 架构介绍,面向接口的编程。
- Hibernate的五个核心接口介绍
- PHP - ArrayAccess接口详解
- linux下usb驱动接口中端点介绍
- Dubbo原理解析-注册中心之接口介绍
- TurboMail邮件系统的二次开发接口介绍
- 【转】ISession接口介绍