程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php中的魔術方法__call(),__clone(),__set(),__get()

php中的魔術方法__call(),__clone(),__set(),__get()

編輯:關於PHP編程

php中的魔術方法__call(),__clone(),__set(),__get()


__call($a,$v),當在類外部調用類中不存在或者不可見(用protected,private修飾)的方法時,會自動調用__call(方法名,數組參數),此時會向改方法傳遞2個參數,第一個為調用的方法名,第二個為傳遞的參數放進數組裡。__clone()方法在類的對象被克隆時觸發。__set($key,$val)在類外部設置類中不存在或者不可見(protected,private修飾)的屬性時觸發該方法,此時傳遞2個參數,第一個是屬性名,第二個是屬性值。__get($key)在類外部獲取類中不存在或者不可見(protected,private修飾)的屬性時觸發該方法,此時傳遞1個參數,即為屬性名。例子:
<?php
class test{
    protected $a=1;
    private $b=2;
    public function __clone(){
        echo "有人要克隆我<br/>";
    }
    public function __call($name,$arg){
        echo "有人要調用不存在或不可見的方法名",$name,",第一個參數是$arg[0]<br/>";
    }
    public function __set($k,$v){
        echo "有人要設置不存在或不可見的屬性",$k,"的值為",$v,"<br/>";
    }
    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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved