從php5以後的版本,類就可以使用魔術方法了。php規定以兩個底線(__)開頭的方法都保留為魔術方法,所以建議大家函數名最好不用__開 頭,除非是為了重載已有的魔術方法。
目前php已有的魔術方法有 __construct,__destruct,__call,__get,__set,__isset,__unset,__sleep,__wakeup,__toString,__set_state 和 __clone。
本文
慢慢長尋夜,明月高空掛
__isset() - 在對類中屬性或者非類中屬性使用isset()方法的時候如果沒有或者非公有屬性,則自動執行__isset()的方法
__unset() - 在對類中屬性或者非類中屬性使用unset()方法的時候如果沒有或者非公有屬性,則自動執行__unset()的方法
public = 'pub'; $this->protected = 'pro'; $this->private = 'pri'; } public function __isset($var){ echo '這裡通過__isset()方法查看屬性名稱為 '.$var."\n"; } public function __unset($var){ echo '這裡通過__unset()方法要銷毀屬性名稱為 '.$var."\n"; }}$exa = new Example;echo '';var_dump(isset($exa->public));echo "\n";var_dump(isset($exa->protected));echo "\n";var_dump(isset($exa->private));echo "\n";var_dump(isset($exa->noVar));echo "\n";echo '';unset($exa->public);var_dump($exa);echo "\n";unset($exa->protected);echo "\n";unset($exa->private);echo "\n";unset($exa->noVar);echo "\n";
結果如下:
bool(true)這裡通過__isset()方法查看屬性名稱為 protectedbool(false)這裡通過__isset()方法查看屬性名稱為 privatebool(false)這裡通過__isset()方法查看屬性名稱為 noVarbool(false)------------------------------------------------------------------------------ object(Example)#1 (2) { ["protected:protected"]=> string(3) "pro" ["private:private"]=> string(3) "pri" }這裡通過__unset()方法要銷毀屬性名稱為 protected這裡通過__unset()方法要銷毀屬性名稱為 private這裡通過__unset()方法要銷毀屬性名稱為 noVar
以上就介紹了PHP 魔術方法:__isset和__unset,包括了PHP 魔術方法方面的內容,希望對PHP教程有興趣的朋友有所協助。