* 魔術方法:
* 1.類別中以雙底線開頭的方法,這是由系統內建的,使用者方法不要用雙底線開頭;
* 2.魔術方法由系統在一定條件下自動觸發呼叫,使用者不能直接呼叫;
* 注意:將類別中的私有成員前面新增單一底線是個好習慣;
* 例如: private $_salary; private function _listUsers(){...}
* 使用魔術方法實作幾個物件存取攔截器
* 所謂攔截器:就是對使用者的一些錯誤或非法存取進行檢測和控制。
* 之前我們學過__get($fieldName)和__set()這是二個最常用的攔截器
* 現在我們再學習一組: __isset($fieldName)和__unset($fieldName)
* 1. __isset():當在類別外偵測一個類別屬性是否存在時會自動呼叫
* 2. __unset():當在類別外銷毀一個類別屬性時會自動呼叫
class Demo { private $name = 'peter'; private $email = 'peter@php.cn'; //当在类外使用isset()检测某个属性是否存在时自动调用 public function __isset($name) { //对访问进行过滤:如果属性名是'name',返回false,否则允许访问 //即除了'name'属性外的其它属性允许外部进行isset()检测 return ($name=='name') ? false : true; } } //实例化 Demo 类 $obj = new Demo; //检测$obj中是否有name属性,返回 echo isset($obj->name)?'存在':'不存在'; echo '<hr>';
檢測$obj中是否存在email屬性,回傳存在,因為類別中__isset()傳回true
echo isset($obj->email)?'存在':'不存在';
在外部使用unset()來銷毀類別屬性
以上是php中魔術方法的說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!