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

首頁 > 開發 > PHP > 正文

ArrayAccess接口介紹

2024-05-04 21:47:33
字體:
來源:轉載
供稿:網友

在 PHP5 中多了一系列新接口,在 HaoHappy 翻譯的系列文章中,你可以了解到他們的應用,同時這些接口和一些實現的 Class 被歸為 Standard PHP Library(SPL),在 PHP5 中加入了很多特性,使類的重載 (Overloading) 得到進一步的加強,ArrayAccess 的作用是使你的 Class 看起來像一個數組 (PHP的數組),這點和 C# 的 Index 特性很相似。

下面是 ArrayAccess 的定義:

  1. interface ArrayAccess 
  2. boolean offsetExists($index) 
  3. mixed offsetGet($index) 
  4. void offsetSet($index, $newvalue) 
  5. void offsetUnset($index) 

由于PHP的數組的強大,很多人在寫 PHP 應用的時候經常將配置信息保存在一個數組里,于是可能在代碼中到處都是 global,我們換種方式?

如以下代碼:

  1. //Configuration Class 
  2. class Configuration implements ArrayAccess 
  3.  
  4. static private $config
  5.  
  6. private $configarray
  7.  
  8. private function __construct() 
  9. // init 
  10. $this->configarray = array("Binzy"=>"Male""Jasmin"=>"Female"); 
  11.  
  12. public static function instance() 
  13. // 
  14. if (self::$config == null) 
  15. self::$config = new Configuration(); 
  16.  
  17. return self::$config
  18.  
  19. function offsetExists($index
  20. return isset($this->configarray[$index]); 
  21.  
  22. function offsetGet($index) { 
  23. return $this->configarray[$index]; 
  24.  
  25. function offsetSet($index$newvalue) { 
  26. $this->configarray[$index] = $newvalue
  27.  
  28. function offsetUnset($index) { 
  29. unset($this->configarray[$index]); 
  30.  
  31. $config = Configuration::instance(); 
  32. print $config["Binzy"]; 

正如你所預料的,程序的輸出是"Male",假如我們做下面那樣的動作:

  1. $config = Configuration::instance(); 
  2. print $config["Binzy"]; 
  3. $config['Jasmin'] = "Binzy's Lover"
  4. // config 2 
  5. $config2 = Configuration::instance(); 
  6. print $config2['Jasmin']; 

是的,也正如預料的,輸出的將是Binzy's Lover,也許你會問,這個和使用數組有什么區別呢?目的是沒有區別的,但最大的區別在于封裝,最基本的工作就是封裝,而封裝能有效將變化置于內部,也就是說,當配置信息不再保存在一個 PHP 數組中的時候,是的,應用代碼無需任何改變,可能要做的,僅僅是為配置方案添加一個新的策略(Strategy)。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 图片| 京山县| 紫阳县| 荔波县| 洛川县| 儋州市| 蕉岭县| 福州市| 宣城市| 郎溪县| 富阳市| 石楼县| 财经| 隆尧县| 全南县| 繁峙县| 海南省| 闻喜县| 重庆市| 长宁区| 贵德县| 淮北市| 潼关县| 通化县| 永兴县| 吴堡县| 潼关县| 清水县| 梨树县| 长白| 民丰县| 临武县| 汝阳县| 天门市| 鹤壁市| 绍兴市| 台湾省| 勃利县| 商都县| 乌拉特后旗| 台江县|