搜尋
首頁php教程php手册php中__get()和__set()用法介绍

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

Jun 13, 2016 am 10:15 AM
getphpset介紹物件屬性比較用法設定進行

想要对对象的属性进行一些设置,如果一个一个设置,会比较麻烦,这时可以使用对象的处理器函数__get()和__set(),不过使用这两个方法的前提,属性需要是protect或private的,如下例:

 代码如下 复制代码

 class Person
{
 private $__data = array();
 
 public function __get($property)
 {
  if (isset($this->__data[$property]))
  {
   return $this->__data[$property];
  }
  else
  {
   return false;
  }
 }
 
 public function __set($property, $value)
 {
  $this->__data[$property] = $value;
 }
}

__set()和__get()方法是针对protect或private属性的,这样可以做到在外界不能直接访问属性,而通过public定义的__set()和__get()方法却可以轻易访问它,同事这两个方法对属性的操作通用性也比较高,也可以限制对象的属性的合法性,只有属于$__data数组中的属性,才可以进行设置,可以防止外界直接对属性进行设置。但是使用__set()和__get()也有些不足之处。第一,这两个方法只会捕捉私有或受保护的属性,即是外界没有访问权限的属性,这样php会报一个致命错误;第二,这两个方法破坏了属性的继承性。如果父对象中有一个__set()方法,而在子类中又实现了自己的__get()方法,那么对象就不会正常的运行,因为父对象的__get()方法是永远调不到的,而且要想检测重写的属性是否存在也不能得到的,因为它不会调用__get()方法。见到有人通过实现__isset()和__unset()来解决上面的问题。代码如下:

 

 代码如下 复制代码
 public function __isset($property)
{
 if (isset($this->data[$property]))
 {
  return true;
 }
 else
 {
  return false;
 }
}
 
public function __unset($property)
{
 if (isset($this->data[$property]))
 {
  return unset($this->data[$property]);
 }
 else
 {
  return false;
 }
}

使用__isset()和__unset()则能保证属性是否真正存在,不过这两个方法只有在PHP5.1后才有效。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能