a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > Access > 正文

ArrayAccess接口介紹

2024-09-07 19:02:53
字體:
來源:轉載
供稿:網友
在 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。
也許你會問,這個和使用數組有什么區別呢?目的是沒有區別的,但最大的區別在于封裝。OO 的最基本的工作就是封裝,而封裝能有效將變化置于內部。也就是說,當配置信息不再保存在一個 PHP 數組中的時候,是的,應用代碼無需任何改變。可能要做的,僅僅是為配置方案添加一個新的策略(Strategy)。:

ArrayAccess 在進一步完善中,因為現在是沒有辦法 count 的,雖然大多數情況并不影響我們的使用。

參考:
1. 《PHP5 Power Programming》
2. 《設計模式》
3. 《面向對象分析與設計》


您可以通過 binzywu at gmail dot com 與作者聯系。

注:本文章版權歸文章作者與超越PHP網站所有,未經超越PHP網站同意,禁止任何商業轉載。非盈利網站及個人網站轉載請注明出處,謝謝合作!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲成av人片在线观看 | 国产一区二区三区久久久 | 成人精品视频99在线观看免费 | 娇小12—13毛片 | 黄色大片网站在线观看 | 色噜噜色偷偷 | 99热首页| 欧美伊人影院 | 午夜免费视频网站 | 国产精品视频网 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 99精品欧美一区二区蜜桃免费 | 一本岛在线视频 | 亚洲国产欧美在线 | 特级淫片裸体免费看 | 中文字幕不卡在线观看 | 国产精品不卡一区 | 天天夜夜骑 | 999国内精品永久免费视频 | 销魂美女一区二区三区视频在线 | 在线播放91| h在线视频 | 娇妻被3p高潮爽视频 | 97综合 | 欧美涩 | 黄色官网在线观看 | 久热久| 一区二区三区国产精品 | 中文日韩在线 | 亚洲精品国产福利 | 欧美成人不卡 | 日韩高清一区 | 精品久久一区二区三区 | 精品久久久久久久久久久久久久 | 91精品国产综合久久香蕉922 | 麻豆精品久久久 | 欧美大片在线观看 | 高清一区二区三区视频 | 久久国产精品免费一区二区三区 | 精品国产一区二区三区久久影院 | 成人天堂资源www在线 |