php中魔術方法的說明

來源:互聯網
上載者:User
* 魔術方法:

* 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()來銷毀類屬性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.