PHP魔術方法

2021-08-06 02:11:41 字數 1293 閱讀 8955

什麼是魔術方法?我們舉例說明!

本帖隱藏的內容

預設不存在,但是如果使用者定義了相關的方法,則在相應的情況發生時 會自動執行的方法,稱之為魔術方法。通常 魔術方法都是以 __開頭。

舉例說明

1)__autoload() :當程式例項化某個類,而該類沒有在當前檔案中被引入。此時會觸發執行__autoload()。程式希望通過該方法,自動引入這個類檔案。該方法有乙個引數,即就是那個忘記引入的類的名稱。__autoload()方法的工作原理是什麼?當程式執行到例項化某個類的時候,如果在例項化前沒有引入這個類檔案,那麼就自動執行__autoload()函式。這個函式會根據例項化的類的名稱來查詢這個類檔案的路徑,當判斷這個類檔案路徑下確實存在這個類檔案後,就執行include或者require來載入該類,然後程式繼續執行,如果這個路徑下不存在該檔案時就提示錯誤。使用自動載入的魔術函式可以不必要寫很多個include或者require函式。

2)__construct()  :這個是魔術構造方法。構造方法是例項化物件的時候自動執行的方法,作用就是初始化物件。該方法可以沒有引數,也可以有多個引數。如果有引數,那麼new這個物件的時候要記得寫上相應的引數。在php5以前,沒有魔術構造方法,普通構造方法是乙個跟類名同名的方法來實現構造的。如果乙個類中既寫了魔術構造方法,又定義了普通構造方法。那麼php5以上版本中,魔術方法起作用,普通構造方法不起作用。反之,在php5以前版本中,不認識魔術構造方法,只是把該方法當做普通的方法。

3)__destruct()  :這個是魔術析構方法。析構方法的作用和構造方法正好相反,是物件被銷毀時被自動呼叫的,作用是釋放記憶體。析構方法沒有引數。

4)__call() :當程式呼叫乙個不存在或不可見的成員方法時,自動觸發執行__call()。它有兩個引數,分別是未訪問到的方法名稱和方法的引數。而第二個引數是陣列型別。

5)__get() :當程式呼叫乙個未定義或不可見的成員屬性時,自動觸發執行__get()。它有乙個引數,表示要呼叫的屬性的名稱。

6)__set():當程式試圖寫入乙個不存在或不可見的成員屬性時,php就會自動執行__set()。它包含兩個引數,分別表示屬性名稱和屬性值。

7)__tostring()  :當程式使用echo或print輸出物件時,會自動呼叫該方法。目的是希望通過該方法將物件轉化為字串,再輸出。__tostring() 無引數,但是該方法必須有返回值。

8)__clone()  :當程式clone乙個物件的時候,能觸發__clone()方法,程式希望通過這個魔術方法實現:不僅僅單純地轉殖物件,還需要轉殖出來的物件擁有原來物件的所有屬性和方法。

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...