php中12個魔術方法
本文列舉了php面向對象當中12個魔術方法,並對此進行一一詳細介紹,希望對新手有所幫助。
1.構造方法: __construct()
參數:自定義
觸發時機:new的一瞬間自動調用
作用:初始化成員屬性
2.析構方法__destruct()
參數:無
觸發時機:在對象釋放的一瞬間自動調用
作用:做收尾工作,數據庫關閉連接等
3.__get()
參數:一個,成員屬性名稱
觸發時機:在類外部訪問私有的受保護的或者未定義的成員屬性時自動調用
作用:控制私有的受保護的未定義的成員屬性的訪問
4.__set()
參數:兩個,成員屬性的名稱和值
觸發時機:在類外部設置私有的受保護的未定義的成員屬性時自動調用
作用:對私有的受保護的未定義的成員屬性進行賦值控制
5.__isset()
參數:一個參數,成員屬性名稱
觸發時機:在類外部調用isset和empty方法驗證私有的受保護的未定義的成員屬性時自動調用
作用:對私有的受保護的未定義成員屬性進行isset和empty的判斷控制
6.__unset()
參數:一個參數,成員屬性名稱
觸發時機:在類外部使用unset方法對私有的受保護的成員屬性進行銷燬的一瞬間自動調用
作用:對私有的受保護的成員屬性進行unset銷燬控制
7.__clone()
參數:無
觸發時機:在類外部使用clone關鍵字對對象進行克隆時自動調用
作用:對克隆體進行標示
8.__toString()
參數:無
觸發時機:在類外部echo對象的時候自動調用
作用:快速輸出對象的內容
注意:本方法必須返回一個字符串類型的內容
9.__call()
參數:兩個參數,調用的不存在方法名稱,第二個參數爲方法的參數(數組)
觸發時機:使用對象調用一個不存在的方法自動調用
作用:屏蔽顯示的錯誤
10.__autoload()
參數:一個參數,new的類的名稱
觸發時機:當new一個找不到的類或者繼承的父類或者在方法體中new的找不到的類的時候自動調用
作用:自動加載找不到的類文件
注意:本方法是在類外部定義的
11.__sleep()
參數:無
觸發時機:當在類外部對對象進行串行化的一瞬間自動調用serialize()
作用:可以對串行化的成員屬性的選擇進行控制
注意:必須返回一個數組(元素:成員屬性名稱)
12.__wakeup()
參數:無
觸發時機:反串行化的一瞬間自動調用unserialize()
作用:在喚醒時對成員屬性進行控制
注意:在反串行化時必須有類在場