PHP中的魔術方法

2021-07-10 12:55:47 字數 1913 閱讀 5206

php 將所有以 __(兩個下劃線)開頭的類方法保留為魔術方法。因此,在定義類方法時,除了下述魔術方法外,建議不要以 __ 為字首。

__construct():構造方法或建構函式

具有建構函式的類會在每次建立新物件時,先呼叫此方法。因此,非常適合在使用物件之前做一些初始化操作。

注意:如果子類中定義了建構函式則不會隱式呼叫其父類的建構函式,要執行父類的建構函式,需要在子類的建構函式中呼叫 

parent::__construct()

如果子類中沒有定義建構函式則會繼承父類的建構函式(假如沒有被定義為 private 的話)。

自 php 5.3.3 起,在命名空間中,與類名同名的方法不再作為建構函式。這一改變不影響不在命名空間中的類。

__destruct():析構方法或析構函式

析構函式會在某個物件的所有引用都被刪除或者當物件被顯式銷毀時執行。

和建構函式一樣。如果子類中定義了析構函式則不會隱式呼叫其父類的析構函式,要執行父類的析構函式,需要在子類的析構函式中呼叫 

parent::__destruct()

。如果子類中沒有定義析構函式則會繼承父類的析構函式(假如沒有被定義為 private 的話)。

析構函式在指令碼關閉時,會自動呼叫。

__call(

string$name , array$arguments ):

當呼叫乙個不可訪問的方法(如未定義或不可見)時,

__call()

會被呼叫。

當在靜態方法中呼叫乙個不可訪問的方法(如未定義或不可見)時,__callstatic()

會被呼叫。

__get

string

$name

):

當讀取未定義的屬性的值時,

__get()

會被呼叫。

__set

( string $name

, mixed $value):

當給未定義的屬性賦值時,__set()

會被呼叫。

__isset

string

$name

):

當對未定義的屬性,執行

isset()

或 empty()

時,__isset()

會被呼叫。

__unset

(  string

$name

):

當對未定義的屬性,執行unset()

時,__unset() 會被呼叫。

__clone(): 當

通過clone關鍵字完成複製物件時,新物件會自動呼叫_

_clone()方法。

__sleep()

當對乙個物件執行

serialize()時

,__sleep()會被呼叫。

__wakeup()

當對乙個物件執行

unserialize()時,__wakeup()會被呼叫。

__autoload

string$class):

當嘗試載入未定義的類時,__autoload()會被自動呼叫。

注意:上述魔術方法若想被自動呼叫,還需要乙個前提條件,即類中已經定義了或者從父類繼承了對應的魔術方法,且可見性為public。

PHP 中的魔術方法

1.construct 此為構造方法,是物件建立完成後第乙個被物件自動呼叫的方法,通常使用該方法完成一些物件的初始化工作。class person function say function run person1 new person 張三 男 20 person2 new person 李四 女...

PHP中的魔術方法

概述 在物件導向程式設計中,php提供了一系列的魔術方法,這些魔術方法為程式設計提供了很多便利。php中的魔術方法通常以 兩個下劃線 開始,並且不需要顯示的呼叫而是由某種特定的條件出發。這篇文章簡單總結了php中提供的魔術方法。開始之前 在總結php的魔術方法之前先來定義兩個類,以便後邊示例使用 複...

php中的魔術方法

參考文件 a.對不可訪問的物件賦值的時候 set b.讀取不可訪問的物件的時候 get c.對可以訪問的屬性呼叫 isset empty isset d.對不可訪問的物件調 unset unset e.構造方法 construct f.乙個物件被當成乙個字串返回的時候應該返回什麼 tostring ...