PHP的魔術常量和魔術方法

2021-08-04 04:59:09 字數 2438 閱讀 4554

** 魔術常量和魔術方法

php 將所有以 __(兩個下劃線)開頭的類方法保留為魔術方法; 所以在定義類方法時,除了上述魔術方法,建議不要以 __ 為字首。 在命名自己的類方法時不能使用這些方法名,除非是想使用其魔術功能。

1、魔術常量

__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 新增)。

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

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

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

2、魔術方法(15個)

__construct(), __destruct(), __call(), __callstatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __tostring(), __invoke(), __set_state(), __clone() 和 __debuginfo()

__construct()   例項化物件時被呼叫,當__construct和以類名為函式名的函式同時存在時,__construct將被呼叫,另乙個不被呼叫。

__destruct()    當刪除乙個物件或物件操作終止時被呼叫。

__call()      物件呼叫某個方法,若方法存在,則直接呼叫;若不存在,則會去呼叫__call函式。

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

__set()  在給不可直接訪問屬性賦值時,__set() 會被呼叫.(__set()方法的$value  引數指定了$name變數的值。)

__tostring()    列印乙個物件的時被呼叫。如echo $obj;或print $obj;

__clone()       轉殖物件時被呼叫。如:$t=new test();$t1=clone $t;

__sleep()       serialize之前被呼叫。若物件比較大,想刪減一點東東再序列化,可考慮一下此函式。

__wakeup()     unserialize時被呼叫,做些物件的初始化工作。

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

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

__set_state()  呼叫var_export時,被呼叫。用__set_state的返回值做為var_export的返回值。

__autoload()    例項化乙個物件時,如果對應的類不存在,則該方法被呼叫。

舉例:

PHP魔術方法和魔術常量

具體的解釋如下 1。construct 例項化物件時被呼叫,當 construct和以類名為函式名的函式同時存在時,construct將被呼叫,另乙個不被呼叫。2。destruct 當刪除乙個物件或物件操作終止時被呼叫。3。call 物件呼叫某個方法,若方法存在,則直接呼叫 若不存在,則會去呼叫 c...

PHP魔術方法和魔術常量

具體的解釋如下 1。construct 例項化物件時被呼叫,當 construct和以類名為函式名的函式同時存在時,construct將被呼叫,另乙個不被呼叫。2。destruct 當刪除乙個物件或物件操作終止時被呼叫。3。call 物件呼叫某個方法,若方法存在,則直接呼叫 若不存在,則會去呼叫 c...

php魔術常量和魔術方法

1.概述 get 獲取私有屬性值的時候呼叫 set 設定私有屬性值的時候呼叫 construct 構造方法 destruct 析構方法 unset 觸發時機 當銷毀乙個私有成員屬性的時候呼叫 引數 屬性名 isset 觸發時機 當判斷乙個私有成員屬性是否被設定過時呼叫 引數 屬性名 invoke 了...