首頁 >後端開發 >php教程 >php 魔術法使用簡介

php 魔術法使用簡介

怪我咯
怪我咯原創
2017-07-14 14:31:021310瀏覽

物件導向程式設計中,PHP提供了一系列的魔術方法,這些魔術方法為程式設計提供了許多便利。 php中的魔術方法通常以(兩個下劃線)開始,並且不需要顯示的呼叫而是由某種特定的條件出發。這篇文章簡單總結了PHP中提供的魔術方法。

1.construct() 當實例化一個物件的時候,這個物件的這個方法首先被呼叫。

class Test { function construct() { echo "before"; } } $t = new Test(); 
class Test { function construct() { echo "before"; } } $t = new Test();

輸出是:
start
我們知道php5物件模型和類別名稱相同的函數是類別的建構子,那麼如果我們同時定義建構子和construct()方法的話,php5會預設呼叫建構子而不會呼叫construct()函數,所以construct()作為類別的預設的建構子
2.destruct() 當刪除一個物件或物件操作終止的時候,呼叫該方法。

class Test { function destruct() { echo "end"; } } $t = new Test();将会输出end 
class Test { function destruct() { echo "end"; } } $t = new Test();将会输出end

我們可以在物件操作結束的時候進行釋放資源之類的操作
3.get() 當試圖讀取一個不存在的屬性的時候被調用。

如果試圖讀取一個物件並不存在的屬性的時候,PHP就會給予錯誤訊息。如果在類別裡加入get方法,並且我們可以用這個函數實作類似java中反射的各種操作。

class Test { public function get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在 
class Test { public function get($key) { echo $key . " 不存在"; } } $t = new Test(); echo $t->name; 就会输出:name 不存在

4.set() 當試圖向一個不存在的屬性寫入值的時候被呼叫。

class Test { public function set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo 
class Test { public function set($key,$value) { echo '对'.$key . "附值".$value; } } $t = new Test(); $t->name = "aninggo"; 就会输出:对 name 附值 aninggo

5.call() 當試圖呼叫物件並不存在的方法時,呼叫該方法。

class Test { public function call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go); 
class Test { public function call($Key, $Args) { echo "您要调用的 {$Key} 方法不存在。你传入的参数是:" . print_r($Args, true); } } $t = new Test(); $t->getName(aning,go);

程式將會輸出:
您要呼叫的 getName 方法不存在。參數是:Array
(
[0] => aning
[1] => go
)
您要呼叫的 getName 方法不存在。參數是:Array
(
[0] => aning
[1] => go
)
6.toString() 當列印一個物件的時候被呼叫

這個方法類似java的toString方法,當我們直接列印物件的時候回呼叫這個函數
class Test { public function toString() { return "印出Test"; } } $t = new Test(); echo $t;
運行echo $t;的時候,就會呼叫$t->toString();從而輸出
列印Test
7.clone() 當物件被複製時,被呼叫
class Test { public function clone() { echo "我被複製了!"; } }$t = new Test() ; $t1 = clone $t;程式輸出:我被克隆了!

以上是php 魔術法使用簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn