文章出處
文章列表
__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
文章列表
全站熱搜