上篇文章為大家介紹了《PHP中什麼是繼承和派生?我們如何運用繼承? 》,本文繼續介紹PHP什麼是魔術方法?常用魔術方法有哪些?有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。
1、什麼是魔術方法
系統在特定的時機自動呼叫的方法
2、常用魔術方法:
_get
#觸發時機:物件在外部存取私有成員或受保護屬性時呼叫
這個方法有一個參數:參數就是屬性名稱
我們以程式碼為例:
首先我們先建立一個新的文件,我們寫一個class類,在類別裡面定義屬性,然後我們創建一個對象,當我們去輸出(echo)剛剛定義的類,我們會發現出現報錯,因為對像只能訪問公共的屬性,我們不能訪問受保護的和私有的屬性,程式碼如下:
<?php class Person { public $name = '林徽因'; protected $pome = '答案很长,我准备用一生的时间来回答,你准备要听了吗?'; private $time = '民国' ; } $niu = new Person(); echo $niu->pome; ?>
程式碼顯示結果:
#我們會發現我們上述程式碼運行出現錯誤,因此,在外部不能存取受保護的和私有的屬性,如果我們想要在外部試圖透過物件來存取受保護的或私有的成員屬性時,就會自動的觸發get方法。
public function __get($name){ echo $name; }
緊接著印出$name,
程式碼顯示結果:
因此我們透過上述程式碼可以使用if語句進行判斷:
if ($name == 'pome'){ return $this->pome;
程式碼顯示結果:
以上就是我們所說的get用法
--set
觸發時機:物件在外部設定私有或受保護成員屬性值的時候呼叫
#該方法有兩個參數:
參數1:成員屬性名稱!
參數2:要設定的值
我們以程式碼為例:
所有的魔術方法都是用public,跟上述一樣我們在類別裡面定義屬性,然後我們建立一個對象,而set屬性有兩個參數,一個是屬性名,一個是屬性值,在類別裡面我們都印出來;
public function __set($name,$value) { var_dump($name,$value); } } $niu = new Person(); //echo $niu->pome; $niu->pome = '答案很长,我准备用一生的时间来回答,你准备要听了吗?';
程式碼顯示結果:
補充:(下次具體講解)
在外部可以透過unset銷毀物件中的public屬性
_unset
觸發時機:物件在外部銷毀私有或受保護成員屬性的時候呼叫
該方法有一一個參數:參數就是私有的成員屬性名稱
_isset
#觸發時機:物件在外部判斷私有或受保護成員屬性的時候調用,
此方法有一個參數:參數就是私有的成員屬性名稱
construct :建構方法
##觸發時機:在建立物件的時候自動呼叫
destruct:析構方法
toString (了解)#觸發時機:echo-一個物件的時候觸發#該函數需要return -一個字串__debugInfo (了解)
觸發時機:var_dump--個物件的時候觸發該函數需要return-一個陣列推薦學習:以上是PHP中什麼是魔術方法?常用魔術方法有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!