摘要:魔術方法構造函數允行開發者在一個類中定義一個方法作為構造函數。如果子類沒有定義構造函數則會如同一個普通的類方法一樣從父類繼承假如沒有被定義為的話。和函數會檢查類中是否存在一個魔術方法。魔術常量魔法方法
PHP - 魔術常量 __LINE__
文件中的當前行號
__FILE__文件的完整路徑和文件名。如果用在被包含文件中,則返回被包含的文件名。
__DIR__文件所在的目錄。如果用在被包括文件中,則返回被包括的文件所在的目錄。
__FUNCTION__函數名稱常量返回該函數被定義時的名字(區分大小寫)。
__CLASS__類的名稱常量返回該類被定義時的名字(區分大小寫)。
__TRAIT__Trait 的名字常量返回 trait 被定義時的名字(區分大小寫)。
__METHOD__類的方法名返回該方法被定義時的名字(區分大小寫)。
__NAMESPACE__當前命名空間的名稱(區分大小寫)。此常量是在編譯時定義的(PHP 5.3.0 新增)。
PHP - 魔術方法 構造函數void __construct ([ mixed $args [, $... ]] )
PHP 5 允行開發者在一個類中定義一個方法作為構造函數。具有構造函數的類會在每次創建新對象時先調用此方法,所以非常適合在使用對象之前做一些初始化工作。
析構函數Note: 如果子類中定義了構造函數則不會隱式調用其父類的構造函數。要執行父類的構造函數,需要在子類的構造函數中調用 parent::__construct()。如果子類沒有定義構造函數則會如同一個普通的類方法一樣從父類繼承(假如沒有被定義為 private 的話)。
oid __destruct ( void )
PHP 5 引入了析構函數的概念,這類似于其它面向對象的語言,如 C++。析構函數會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行。
方法重載public mixed __call ( string $name , array $arguments ) public static mixed __callStatic ( string $name , array $arguments )
在對象中調用一個不可訪問方法時,__call()?會被調用。
用靜態方式中調用一個不可訪問方法時,__callStatic()會被調用。
$name 參數是要調用的方法名稱。$arguments 參數是一個枚舉數組,包含著要傳遞給方法 $name 的參數。
屬性重載public void __set ( string $name , mixed $value ) public mixed __get ( string $name ) public bool __isset ( string $name ) public void __unset ( string $name )
在給不可訪問屬性賦值時,__set()?會被調用。
讀取不可訪問屬性的值時,__get()?會被調用。
當對不可訪問屬性調用 isset() 或 empty() 時,__isset()?會被調用。
當對不可訪問屬性調用 unset() 時,__unset()?會被調用。
參數 $name 是指要操作的變量名稱。__set()?方法的 $value 參數指定了 $name 變量的值。
屬性重載只能在對象中進行。在靜態方法中,這些魔術方法將不會被調用。所以這些方法都不能被 聲明為 static。從 PHP 5.3.0 起, 將這些魔術方法定義為 static 會產生一個警告。
__sleep()和__wakeup()Note: 因為 PHP 處理賦值運算的方式,__set()?的返回值將被忽略。類似的, 在下面這樣的鏈式賦值中,__get()?不會被調用:$a = $obj->b = 8
Note: 在除 isset() 外的其它語言結構中無法使用重載的屬性,這意味著當對一個重載的屬性使用 empty() 時,重載魔術方法將不會被調用。為避開此限制,必須將重載屬性賦值到本地變量再使用 empty()。
public array __sleep ( void ) void __wakeup ( void )
serialize() 函數會檢查類中是否存在一個魔術方法?__sleep()。如果存在,該方法會先被調用,然后才執行序列化操作。此功能可以用于清理對象,并返回一個包含對象中所有應被序列化的變量名稱的數組。如果該方法未返回任何內容,則 NULL 被序列化,并產生一個 E_NOTICE 級別的錯誤。
Note:__sleep() 不能返回父類的私有成員的名字。這樣做會產生一個 E_NOTICE 級別的錯誤。可以用 Serializable 接口來替代。
__sleep()?方法常用于提交未提交的數據,或類似的清理操作。同時,如果有一些很大的對象,但不需要全部保存,這個功能就很好用。
與之相反,unserialize() 會檢查是否存在一個?__wakeup()?方法。如果存在,則會先調用?__wakeup?方法,預先準備對象需要的資源。
__wakeup()?經常用在反序列化操作中,例如重新建立數據庫連接,或執行其它初始化操作。
__toString()public string __toString ( void )
__toString()?方法用于一個類被當成字符串時應怎樣回應。例如 echo $obj; 應該顯示些什么。此方法必須返回一個字符串,否則將發出一條 E_RECOVERABLE_ERROR 級別的致命錯誤。
__invoke()mixed __invoke ([ $... ] )
當嘗試以調用函數的方式調用一個對象時,__invoke()?方法會被自動調用。
__set_state()static object __set_state ( array $properties )
自 PHP 5.1.0 起當調用 var_export() 導出類時,此靜態 方法會被調用。
本方法的唯一參數是一個數組,其中包含按 array("property" => value, ...) 格式排列的類屬性。
PHP: 魔術常量
PHP: 魔法方法
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22461.html
摘要:注意和是不同的變量,處理它們的方式不同變量說明默認情況下包含了,和的數組。包含相同的信息,但它不是一個超全局變量。這些特殊的常量不區分大小寫,如下幾個的魔術常量名稱說明文件中的當前行號。 整理了下關于php的基礎知識,參考了些資料,如下: 超全局變量 超全局變量 — 超全局變量是在全部作用域中始終可用的內置變量: $GLOBALS $GLOBALS — 引用全局作用域中可用的全部變量 ...
摘要:類與對象基本概念如果在之后跟著的是一個包含有類名的字符串,則該類的一個實例被創建。如果該類屬于一個名字空間,則必須使用其完整名稱。如果一個類被聲明為,則不能被繼承。命名空間通過關鍵字來聲明。 類與對象 基本概念 new:如果在 new 之后跟著的是一個包含有類名的字符串,則該類的一個實例被創建。如果該類屬于一個名字空間,則必須使用其完整名稱。 Example #3 創建一個實例 ...
摘要:對象調用某個方法,若方法存在,則直接調用若不存在,則會去調用函數。魔術常量返回文件中的當前行號。在中該值總是小寫字母的。返回類的方法名新加。返回該方法被定義時的名字區分大小寫。你傳入的參數是程序將會輸出您要調用的方法不存在。 魔術函數 __construct() 實例化對象時被調用,當__construct和以類名為函數名的函數同時存在時,__construct將被調用,另一個不被調...
閱讀 2931·2023-04-26 02:22
閱讀 2290·2021-11-17 09:33
閱讀 3134·2021-09-22 16:06
閱讀 1072·2021-09-22 15:54
閱讀 3536·2019-08-29 13:44
閱讀 1914·2019-08-29 12:37
閱讀 1321·2019-08-26 14:04
閱讀 1914·2019-08-26 11:57