php中的魔術方法__call(),__clone(),__set(),__get()
__call($a,$v),當在類外部調用類中不存在或者不可見(用protected,private修飾)的方法時,會自動調用__call(方法名,數組參數),此時會向改方法傳遞2個參數,第一個為調用的方法名,第二個為傳遞的參數放進數組裡。__clone()方法在類的對象被複製時觸發。__set($key,$val)在類外部設定類中不存在或者不可見(protected,private修飾)的屬性時觸發該方法,此時傳遞2個參數,第一個是屬性名稱,第二個是屬性值。__get($key)在類外部擷取類中不存在或者不可見(protected,private修飾)的屬性時觸發該方法,此時傳遞1個參數,即為屬性名稱。例子:
"; } public function __call($name,$arg){ echo "有人要調用不存在或不可見的方法名",$name,",第一個參數是$arg[0]
"; } public function __set($k,$v){ echo "有人要設定不存在或不可見的屬性",$k,"的值為",$v,"
"; } public function __get($k){ echo "有人要擷取不存在或不可見的屬性",$k; }}
$test1=new test();$test3=$test1;//此時$test3和$test1是同一個對象,即都指向同一個對象$test2=clone $test1;//複製後$test1和$test2是2個不同的對象,雖然儲存的值相同$test1->abc(1,2,3);$test1->a=3;$test1->b;
http://www.bkjia.com/PHPjc/1073355.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1073355.htmlTechArticlephp中的魔術方法__call(),__clone(),__set(),__get() __call($a,$v),當在類外部調用類中不存在或者不可見(用protected,private修飾)的方法時,會自動調...