首頁  >  文章  >  後端開發  >  php中魔術方法的說明

php中魔術方法的說明

无忌哥哥
无忌哥哥原創
2018-06-28 15:40:562121瀏覽

* 魔術方法:

 * 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 &#39;<hr>&#39;;

檢測$obj中是否存在email屬性,回傳存在,因為類別中__isset()傳回true

echo isset($obj->email)?&#39;存在&#39;:&#39;不存在&#39;;

在外部使用unset()來銷毀類別屬性

以上是php中魔術方法的說明的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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