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

來源:互聯網
上載者:User

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修飾)的方法時,會自動調...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.