PHP 魔術方法彙總

2021-09-26 22:21:56 字數 1401 閱讀 4156

魔術方法

__construct(), __destruct(), __call(), __callstatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __tostring(), __invoke(), __set_state(), __clone() 和 __debuginfo() 等方法在 php 中被稱為"魔術方法"(magic methods)。在命名自己的類方法時不能使用這些方法名,除非是想使用其魔術功能。

1. __construce()

允行開發者在乙個類中定義乙個方法作為建構函式。具有建構函式的類會在每次建立新物件時先呼叫此方法,所以非常適合在使用物件之前做一些初始化工作。

2. __destruct()

php 5 引入了析構函式的概念,這類似於其它物件導向的語言,如 c++。析構函式會在到某個物件的所有引用都被刪除或者當物件被顯式銷毀時執行。

3. __call()

在物件中呼叫乙個不可訪問方法時,__call() 會被呼叫。

4. __callstatic()

在物件中呼叫乙個靜態不可訪問方法時,__call() 會被呼叫。

5. __get()

讀取不可訪問屬性的值時,__get() 會被呼叫

6. _set()

在給不可訪問屬性賦值時,__set() 會被呼叫

7. __isset()

當對不可訪問屬性呼叫 isset() 或 empty() 時,__isset() 會被呼叫。

8. __unset()

當對不可訪問屬性呼叫 unset() 時,__unset() 會被呼叫。

9. __sleep()

serialize() 函式會檢查類中是否存在乙個魔術方法 __sleep()。如果存在,該方法會先被呼叫,然後才執行序列化操作。此功能可以用於清理物件,並返回乙個包含物件中所有應被序列化的變數名稱的陣列

10. __wakeup()

unserialize() 會檢查是否存在乙個 __wakeup() 方法。如果存在,則會先呼叫 __wakeup 方法,預先準備物件需要的資源.

11. __tostring()

__tostring() 方法用於乙個類被當成字串時應怎樣回應。

12. __invoke()

當嘗試以呼叫函式的方式呼叫乙個物件時,__invoke() 方法會被自動呼叫。

13. __set_state()

當呼叫 var_export() 匯出類時,此靜態 方法會被呼叫。

14. __clone()

當複製完成時,如果定義了 __clone() 方法,則新建立的物件(複製生成的物件)中的 __clone() 方法會被呼叫,可用於修改屬性的值(如果有必要的話)。

15 __debuginfo()

PHP魔術方法彙總

魔術方法是php物件導向中特有的特性。它們在特定的情況下被觸發,都是以雙下劃線開頭,在此做了下總結,向大家分享下 1.construct,destruct constuct構建物件的時被呼叫 destruct明確銷毀物件或指令碼結束時被呼叫 2.get,set set當給不可訪問或不存在屬性賦值時被...

PHP魔術方法使用方法彙總

魔術方法是php物件導向中特有的特性。它們在特定的情況下被觸發,都是以雙下劃線開頭,你可以把它們理解為鉤子,利用模式方法可以輕鬆實現php物件導向中過載 overloading即動態建立類屬性和方法 魔術方法很多還是成對出現的,以下列出目前php中所有的模式方法。1.construct,destru...

php中的常用魔術方法彙總

1 php把所有 開頭的方法當做魔術方法,所以任何自定義的方法都不能是 開頭 php提供的過載,是指動態的建立屬性或方法。過載是通過魔術方法來實現的。這些魔術方法的引數不能飲用傳遞,get set isset unset 實現類屬性過載。2 當訪問類中不可訪問的屬性時,將呼叫 get 方法 3 當訪...