您好,登錄后才能下訂單哦!
這篇文章主要講解了“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中常用的魔術方法有什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。