php常用的魔術方法
阿新 • • 發佈:2018-06-13
存儲空間 關閉 spa ext 函數 屬性和方法 utf-8 isset method
__construct:構造函數,一旦創建對象都就會自動調用
__call:當調用了未定義的方法時會自動觸發
__set:當給類外部不可訪問的屬性設置值時會自動觸發
__get:當獲取類外部不可訪問的屬性時會自動觸發
__isset:當對類外部不可訪問的屬性使用了isset()或empty()時會自動觸發
__unset:當對類外部不可訪問的屬性使用了unset()時會自動觸發
__destruct:當對象結束其生命周期時就會自動觸發
<?php header("content-type:text/html;charset=UTF-8"); class Magic{ private $testGet; //私有測試__get魔術方法的屬性 private $testSet; //私有測試__set魔術方法的屬性 private $testIsset; //私有測試__isset魔術方法的屬性 private $testUnset; //私有測試__unset魔術方法的屬性 public static $a=1; //私有用於測試__clone魔術方法的常量 /** * 測試構成方法,創建新對象時先調用此方法 */ public function __construct(){ echo static::$a+2; echo "這是構造函數"."<br>"."<br>"; } /** * 測試isset方法,這是當不可訪問的屬性被調用了isset()或者empty()方法時會觸發 */ public function __isset($name){ echo "對不可訪問屬性:".$name."調用 isset() 或 empty()"."<br>"."<br>"; } /** * 測試unset方法,這是當不可訪問的屬性被調用了unset()方法時會觸發 */ public function __unset($name){ echo "當對不可訪問屬性:".$name."調用unset()"."<br>"."<br>"; } /** * 測試call方法,這是當調用了未定義的方法時會觸發 */ public function __call($method,$agrs){ echo "調用了不存在的方法:".$method."<br>"."這是接收的參數:"; print_r($agrs); echo "<br>"."<br>"; } /** * 測試set方法,這是當不可訪問的屬性被設置時會觸發 */ public function __set($name,$data){ echo "調用了不可設置的屬性:".$name."<br>"."參數為:".$data."<br>"; } /** * 測試get方法,這是當不可訪問的屬性被訪問時會觸發 */ public function __get($name){ echo "調用了不可獲取的屬性:".$name."<br>"."<br>"; } /** * 測試clone方法,這是類被克隆時會觸發 */ public function __clone(){ echo static::$a+1; echo "我被克隆了"."<br>"."<br>"; } /** * 測試析構方法,這是當在腳本關閉時被調用 */ public function __destruct(){ echo "這是析構函數"; } } $test=new Magic(); //實例化Magic類,觸發構造函數 $test->callMethod(‘123‘); //調用不存在的方法 $test->testSet=123; //設置類外部不可訪問的屬性 $test->testGet; //獲取類外部不可訪問的屬性 $test2=clone $test; //克隆test類,開辟了另一份一模一樣的屬性和方法存儲空間,但相互不會影響 isset($test->testIsset); //用isset執行類外部不可訪問的屬性 unset($test->testUnset); //用unset執行類外部不可訪問的屬性
php常用的魔術方法