PHP魔術方法和魔法變數詳解

2022-07-17 21:06:16 字數 1428 閱讀 5735

一、魔術常量

__line__ 檔案中的當前行號。

__file__ 檔案的完整路徑和檔名。如果用在被包含檔案中,則返回被包含的檔名。

自 php 4.0.2 起,__file__ 總是包含乙個絕對路徑(如果是符號連線,則是解析後的絕對路徑),

而在此之前的版本有時會包含乙個相對路徑。

__dir__ 檔案所在的目錄。如果用在被包括檔案中,則返回被包括的檔案所在的目錄。

它等價於 dirname(__file__)。除非是根目錄,否則目錄中名不包括末尾的斜槓。

__function__ 函式名稱(php 4.3.0 新加)。自 php 5 起本常量返回該函式被定義時的名字(區分大小寫)。

在 php 4 中該值總是小寫字母的。

__class__ 類的名稱(php 4.3.0 新加)。自 php 5 起本常量返回該類被定義時的名字(區分大小寫)。

在 php 4 中該值總是小寫字母的。類名包括其被宣告的作用區域(例如 foo\bar)。

注意自 php 5.4 起 __class__ 對 trait 也起作用。

當用在 trait 方法中時,__class__ 是呼叫 trait 方法的類的名字。

__trait__ trait 的名字(php 5.4.0 新加)。自 php 5.4 起此常量返回 trait 被定義時的名字(區分大小寫)。

trait 名包括其被宣告的作用區域(例如 foo\bar)。

__method__ 類的方法名(php 5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。

__namespace__ 當前命名空間的名稱(區分大小寫)。此常量是在編譯時定義的(php 5.3.0 新增)。

二、魔術方法

__get()

在類外訪問私有化成員屬性時,__get會被自動觸發。

__get()必須給乙個引數。引數就是訪問的私有化成員屬性。

__set()

在類外設定私有化成員屬性時,__set()會被自動觸發。

__set()必須給兩個引數。引數就是設定的私有化成員屬性名稱。設定的值。

__call()

當訪問類中乙個不存在的成員方法時,會被自動呼叫。

魔術方法__call有兩個必須的引數。第乙個引數是請求的不存在的方法名稱,格式是字串。第二個引數是請求不存在方法時給的引數。格式是陣列。

作用:可以將多個功能相似的成員方法都寫入到魔術方法__call裡面。

__autoload()

功能自動載入。在例項化類物件時,會被自動觸發。

有乙個必須的引數。引數例項化時的類名稱。

__tostring()

- 不需要引數

- 當企圖以字串形式輸出類物件時

- 要求必須return 乙個內容

- 返回tostring 魔術方法中return 的字串。

- 介紹類

PHP魔術變數和魔術方法

魔術變數 1.file 當前執行檔案的完整路徑和檔名。如果用在被包含檔案中,則返回被包含的檔名。魔術方法 1.sleep 和 weekup 執行serialize 前呼叫類裡的 sleep 方法,並返回陣列 去掉不必要的屬性 執行unserialize 前呼叫 wakeup 方法,並返回序列化後需要...

PHP魔術方法和魔術變數

construct 類的建構函式 destruct 類的析構函式 call 在物件中呼叫乙個不可訪問方法時呼叫 callstatic 用靜態方式中呼叫乙個不可訪問方法時呼叫 get 獲得乙個類的成員變數時呼叫 set 設定乙個類的成員變數時呼叫 isset 當對不可訪問屬性呼叫isset 或empt...

PHP 魔術變數和魔術函式詳解

魔術變數 php 向它執行的任何指令碼提供了大量的預定義常量。不過很多常量都是由不同的擴充套件庫定義的,只有在載入了這些擴充套件庫時才會出現,或者動態載入後,或者在編譯時已經包括進去了。有八個魔術常量它們的值隨著它們在 中的位置改變而改變。例如 line 的值就依賴於它在指令碼中所處的行來決定。這些...