国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > 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網站同意,禁止任何商業轉載。非盈利網站及個人網站轉載請注明出處,謝謝合作!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪泽县| 长治市| 旬阳县| 巧家县| 康定县| 西吉县| 石狮市| 永城市| 安新县| 建瓯市| 金寨县| 江西省| 郯城县| 小金县| 大足县| 亚东县| 锦屏县| 浦北县| 定安县| 安岳县| 汉寿县| 东丽区| 徐州市| 修文县| 岑溪市| 中阳县| 页游| 巴里| 依兰县| 娄底市| 弋阳县| 大理市| 江门市| 钟山县| 安阳市| 枝江市| 榆社县| 什邡市| 桐梓县| 札达县| 岐山县|