PHP面向對象中常用的魔術方法總結


1.構造函數__construct()’

說明:是對象創建完成後,第一個被調用的方法,當創建一個對象時,構造方法就會被自動調用一次,不能主動通過對象的引用調用構造方法。

作用:就是爲成員屬性初始化

格式:

Function __construct([參數列表]){

//方法體,通常用來對成員屬性進行初始化賦值

}


2.析構函數__destruct()

說明:在銷燬一個對象之前執行的一些特定操作,例如:釋放文件、關閉結果集。

作用:關閉一些資源,做一些清理工作

格式:function__destruct(){

//方法體,通常用來完成一些在對象銷燬之前的清理任務

}


3.方法重載 __call()

說明:調用對象中不存在的方法時會自動調用此方法,並且程序也可以繼續向下執行。caLl()方法有兩個參數:第一個是調用不存在的方法時,接受這個方法名稱字符串;而參數列表則以數組的形式傳遞到__call()方法的第二個參數中。

格式:publicmixed__call ( string$name , array$arguments )


4.方法重載__callstatic()

說明:用靜態方式調用一個不可訪問的方法時,會自動調用此方法。$name參數是要調用的方法名稱。$arguments參數是一個枚舉數組,包含着要傳遞給方法$name的參數。

格式:public staticmixed__callStatic ( string$name , array$arguments )

5.__get()

說明:直接在對象的外部獲取私有屬性的值時,會自動調用此方法,返回私有屬性的值。並且可以再__get()方法中根據不同的屬性,設置一些條件來限制對私有屬性的非法取值操作。

格式:publicmixed__get ( string$name )


6.__set()

說明:控制在對象外部只能爲私有的成員屬性賦值,不能獲取私有屬性的值。

作用:是在程序運行過程中爲私有的成員屬性設置值,它不需要任何返回值。但他需要兩個參數,第一個參數需要傳入在爲私有屬性設置值時的屬性名,第二個參數則需要傳入爲屬性設置的值。

格式:publicvoid__set ( string$name , mixed$value )

7.__isset()

說明:當需要測定對象裏面的私有屬性的值時,會自動調用此方法,間接地幫助我們完成對對象中私有成員屬性的測定。

格式:publicbool__isset ( string$name )

8.__unset()

說明:當對不可訪問屬性調用unset()時,__unset() 會被調用。進行私有屬性的刪除操作。

格式:publicvoid__unset ( string$name )

9.__sleep()

說明:在調用seralize()函數將對象串行化時,會自動調用此方法,用來將對象中的部分成員串行化。該函數不接受任何參數,但需要返回一個數組,在數組中包含需要串行化的屬性。未被包含在數組中的屬性將在串行化時被忽略。如果沒有在類中聲明__sleep()方法,對象中的所有屬性都將被串行化。

格式:publicarray__sleep ( void )

10.__wakeup()

說明:在調用unseralize()函數反串行化對象時,會自動調用此方法,用來在二進制串中重新組成一個對象時,爲新對象中的成員屬性重新初始化。

格式:void__wakeup ( void )

11.__toString()

說明:是快速獲取對象的字符串表示的最便捷的方式,他是在直接輸出對象引用時自動調用的方法。

格式:publicstring__toString ( void )

12.__invoke()

說明:當嘗試以調用函數的方式調用一個對象時,__invoke() 方法會被自動調用。

格式:mixed__invoke ([ $... ] )

13__clone()

說明:該方法在對象被克隆時自動調用,所以就可以通過此方法對克隆後的副本重新初始化。該方法不需要任何參數,該方法中自動包含$this$that兩個對象的引用,$this是副本對象的引用,而$that則是原本對象的引用。

格式:void__clone ( void )



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章