文章出處

__get(),__set(),__isset(),__unset()

在給不可訪問屬性賦值時,__set()會被調用
讀取不可訪問屬性的值時,__get()會被調用

當對不可訪問屬性調用isset()或empty()時,__isset()會被調用
當對不可訪問屬性調用unset()時,__unset()會被調用

所謂不可訪問屬性,實際上就是在調用某個屬性時發現這個屬性沒有被定義,這時候不同的操縱會觸發不同的魔術方法

這幾個方法也被稱為屬性重載的魔術方法

 1 <?php
 2 class MagicTest{
 3     public function __get($name) {
 4         return "Getting the property ".$name."<br/>";
 5     }
 6     public function __set($name,$value) {
 7         echo "setting the property ".$name." to value ".$value."<br/>";
 8     }
 9     public function __isset($name) {
10         echo "__isset invoke"."<br/>";
11         return true;
12     }
13     public function __unset($name) {
14         echo "unsetting property ".$name;
15     }
16 }
17 
18 $obj = new MagicTest();
19 echo $obj->classname;
20 $obj->className="MagicClassX";
21 echo '$obj->ClassName is set?'.isset($obj->className)."<br/>";
22 echo '$obj->className is empty?'.empty($obj->className)."<br/>";
23 unset($obj->className);

輸出為:

Getting the property classname
setting the property className to value MagicClassX
__isset invoke
$obj->ClassName is set?1
__isset invoke
$obj->className is empty?
unsetting property className

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()