PHP的ArrayAccess接口介绍

在 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‘];

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。