PHP 魔術方法

2021-09-02 20:09:54 字數 1588 閱讀 8292

php把所有以__(兩個下劃線)開頭的類方法當成魔術方法

1)__construct()

這樣的方法是建構函式,適合在使用物件前做一些初始化工作(注意:在5.3.3之後的版本與類名相同的方法不在是作為建構函式),注意在子類需要使用父類建構函式需要顯示呼叫parent::__construct()

2)__destruct()

與建構函式對應的是這個函式,這個是析構函式,物件的所有引用都被刪除或者當前物件被顯示銷毀才執行

如果需要呼叫父類析構函式也需要顯式呼叫parent::__destruct()。注意這個析構函式即使呼叫exit()函式也會執行

3)__call()

如果呼叫了當前環境下未定義(包含沒有許可權訪問的)和不可見屬性或者方法,這個方法會呼叫本類__call,如果沒有的話就會呼叫父類的__call方法

4)__callstatic()

5.3.0新增方法,主要用於靜態方法中,同樣的,這個方法必須使用public修飾

5)__get()

讀取未定義變數會呼叫該方法

6)__set()

5.1.0之後增加,未定義變數賦值會呼叫該方法

7)__isset()

當對未定義變數呼叫isset()或者empty()時呼叫該方法

8)__unset()

對未定義變數呼叫unset(),該魔術方法才會生效

9)__sleep()

serialize() 檢查類中是否有魔術名稱__sleep 的函式。如果這樣,該函式將在任何序列化之前執行。它可以清除物件並應該返回乙個包含有該物件中應被序列化的所有變數名的陣列。使用__sleep 的目的是關閉物件可能具有的任何資料庫連線,提交等待中的資料或進行類似的清除任務。此外,如果有非常大的物件而並不需要完全儲存下來時此函式也很有用。

10)__wakeup()

unserialize() 檢查具有魔術名稱 __wakeup 的函式的存在。如果存在,此函式可以重建物件可能具有的任何資源。使用 __wakeup 的目的是重建在序列化中可能丟失的任何資料庫連線以及處理其它重新初始化的任務。

11)__tostring()

__tostring方法在將乙個物件轉化成字串時自動呼叫

在php 5.2.0之前,__tostring方法只有結合使用echo() 或 print()時 才能生效。php 5.2.0之後,則可以在任何字串環境生效(例如通過printf(),使用%s修飾符),但 不能用於非字串環境(如使用%d修飾符)。從php 5.2.0,如果將乙個未定義__tostring方法的物件 轉換為字串,會報出乙個e_recoverable_error錯誤

12)__invoke()

當嘗試以呼叫函式的方式呼叫乙個物件時,__invoke() 方法會被自動呼叫,注意只能在5.3.0以後才能使用

13)__set_state()

當呼叫 var_export()時,這個靜態 方法會被呼叫(自php 5.1.0起有效)。

14)__clone()

當複製完成時, 如果定義了__clone()方法, 則新建立的物件(複製生成的物件)中的__clone()方法會被呼叫, 可用於修改屬性的值(如果有必要的話)。因為php物件賦值使用的引用傳遞,新物件會更改原物件的屬性和方法

php魔術常量,魔術方法

魔術常量 1。line 返回檔案中的當前行號。2。file 返回檔案的完整路徑和檔名。如果用在包含檔案中,則返回包含檔名。自php4.0.2 起,file 總是包含乙個絕對路徑,而在此之前的版本有時會包含乙個相對路徑。3。function 返回函式名稱 php4.3.0 新加 自php5 起本常量返...

invoke 魔術 PHP 魔術方法

php 魔術方法 構造方法 construct 析構方法 destruct get 與 set unset call 和 callstatic sleep 和 wakeup clone tostring invoke set state debuginfo construct 這個方法應該是最常用的...

php魔術方法

php5魔術方法 魔術函式 1。construct 建構函式 例項化物件時被呼叫,當 construct和以類名為函式名的建構函式同時存在時,construct將被呼叫,另乙個不被呼叫。2。destruct 析構函式 當刪除乙個物件或物件操作終止時被呼叫 程式結束後物件就摧毀 永遠都是最後執行的。3...