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

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

php中__get()和__set()用法介紹

2024-05-04 21:57:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

想要對(duì)對(duì)象的屬性進(jìn)行一些設(shè)置,如果一個(gè)一個(gè)設(shè)置,會(huì)比較麻煩,這時(shí)可以使用對(duì)象的處理器函數(shù)__get()和__set(),不過(guò)使用這兩個(gè)方法的前提,屬性需要是protect或private的,如下例:

實(shí)例代碼如下:

  1.  class Person 
  2.  private $__data = array(); 
  3.  
  4.  public function __get($property
  5.  { 
  6.   if (isset($this->__data[$property])) 
  7.   { 
  8.    return $this->__data[$property]; 
  9.   } 
  10.   else 
  11.   { 
  12.    return false; 
  13.   } 
  14.  } 
  15.  
  16.  public function __set($property$value
  17.  { 
  18.   $this->__data[$property] = $value
  19.  } 
  20. }  

__set()和__get()方法是針對(duì)protect或private屬性的,這樣可以做到在外界不能直接訪問(wèn)屬性,而通過(guò)public定義的__set()和__get()方法卻可以輕易訪問(wèn)它,同事這兩個(gè)方法對(duì)屬性的操作通用性也比較高,也可以限制對(duì)象的屬性的合法性,只有屬于$__data數(shù)組中的屬性,才可以進(jìn)行設(shè)置,可以防止外界直接對(duì)屬性進(jìn)行設(shè)置.但是使用__set()和__get()也有些不足之處.第一,這兩個(gè)方法只會(huì)捕捉私有或受保護(hù)的屬性,即是外界沒(méi)有訪問(wèn)權(quán)限的屬性,這樣php會(huì)報(bào)一個(gè)致命錯(cuò)誤;第二,這兩個(gè)方法破壞了屬性的繼承性.如果父對(duì)象中有一個(gè)__set()方法,而在子類中又實(shí)現(xiàn)了自己的__get()方法,那么對(duì)象就不會(huì)正常的運(yùn)行,因?yàn)楦笇?duì)象的__get()方法是永遠(yuǎn)調(diào)不到的,而且要想檢測(cè)重寫的屬性是否存在也不能得到的,因?yàn)樗粫?huì)調(diào)用__get()方法.見(jiàn)到有人通過(guò)實(shí)現(xiàn)__isset()和__unset()來(lái)解決上面的問(wèn)題.代碼如下:

實(shí)例代碼如下:

  1. public function __isset($property
  2.  if (isset($this->data[$property])) 
  3.  { 
  4.   return true; 
  5.  } 
  6.  else 
  7.  { 
  8.   return false; 
  9.  } 
  10.  
  11. public function __unset($property
  12.  if (isset($this->data[$property])) 
  13.  { 
  14.   return unset($this->data[$property]); 
  15.  } 
  16.  else 
  17.  { 
  18.   return false; 
  19.  } 
  20. }  

使用__isset()和__unset()則能保證屬性是否真正存在,不過(guò)這兩個(gè)方法只有在PHP5.1后才有效.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 正定县| 沾益县| 无棣县| 丰镇市| 安徽省| 石狮市| 田林县| 夏邑县| 龙泉市| 宝应县| 扬中市| 无棣县| 佛学| 晋宁县| 蒙阴县| 滦平县| 阿克| 彭阳县| 高唐县| 南雄市| 内乡县| 丹寨县| 承德县| 漳浦县| 凯里市| 吉木萨尔县| 达尔| 宝山区| 稷山县| 东至县| 二连浩特市| 宁津县| 体育| 德阳市| 昌邑市| 洛浦县| 通辽市| 磐安县| 泗水县| 桂东县| 林州市|