在 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。我们换种方式?
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_r($config); echo "<br/>"; echo $config['Binzy']; echo "<br/>"; $config['Binzy'] = '1222'; echo $config['Binzy'];