码迷,mamicode.com
首页 > 数据库 > 详细

PHP的ArrayAccess接口介绍

时间:2015-03-01 16:59:14      阅读:172      评论:0      收藏: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。我们换种方式?

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

PHP的ArrayAccess接口介绍

标签:

原文地址:http://www.cnblogs.com/phpfans/p/4307204.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!