您好,登錄后才能下訂單哦!
這篇文章主要介紹“講解PHP 預定義變量、魔術常量和魔術方法功能與用法”,在日常操作中,相信很多人在講解PHP 預定義變量、魔術常量和魔術方法功能與用法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”講解PHP 預定義變量、魔術常量和魔術方法功能與用法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
PHP 預定義了一些變量、常量、方法,使用起來很方便,例如直接使用 __DIR__
獲取當前文件所在的目錄。
下面分別詳細介紹一下 PHP 的預定義變量、魔術常量和魔術方法
超全局變量是在全部作用域中始終可用的內置變量,意味這你可以在 PHP 腳本的任意位置直接訪問。在函數或方法中無需執行 global $variable; 就可以訪問它們。
超全局變量是從 PHP 4.1.0 開始才有的功能。
PHP 的超級全局變量有:
$GLOBALS,引用全局作用域中可用的全部變量
$_SERVER,服務器和執行環境信息
$_GET,HTTP GET 變量
$_POST,HTTP POST 變量
$_FILES,HTTP 文件上傳變量
$_COOKIE,HTTP Cookies
$_SESSION,Session 變量
$_REQUEST,HTTP Request 變量
$_ENV,環境變量
$php_errormsg,前一個錯誤信息
$HTTP_RAW_POST_DATA,原生 POST 數據,一般會使用 php://input 代替 $HTTP_RAW_POST_DATA
$http_response_header,HTTP 響應頭
$argc,傳遞給腳本的參數數目
$argv,傳遞給腳本的參數數組
PHP 有八個魔術常量,它們的值隨著它們在代碼中的位置改變而改變。例如 __LINE__
的值就依賴于它在腳本中所處的行來決定。這些特殊的常量(魔術常量)不區分大小寫,如下:
__LINE__,文件中的當前行號
__FILE__,文件的完整路徑和文件名,如果用在被包含的文件中,則返回被包含的文件名
__DIR__,文件所在的目錄,如果用在被包括文件中,則返回被包括的文件所在的目錄。等價與 dirname(__FILE__)
__FUNCTION__,函數的名稱
__CLASS__,類的名稱
__TRAIT__,trait 的名字
__METHOD__,類的方法名
__NAMESPACE__,當前命名空間的名稱
Magic methods PHP 的魔術方法,在命名自定義的類方法時不能使用這些方法名,因為 PHP 已經規定好了這些方法是有特定的功能,例如 __construct() 是構造方法。
PHP 將所有以 __(兩個下劃線)開頭的類方法保留為魔術方法。所以在定義類方法時,除了魔術方法,建議不要以 __ 為前綴。
__construct(),構造函數
__destruct(),析構函數
__call(),在對象中調用一個不可訪問的方法時,__call() 會被調用
__callStatic(),在對象中調用一個不可訪問的靜態方法時,__call() 會被調用
__get(),當讀取不可訪問的屬性值時,__set() 會被調用
__set(),當給不可訪問的屬性賦值時,__set() 會被調用
__isset(),當對不可訪問屬性調用 isset() 或 empty() 是,__isset() 會被調用
__unset(),當對不可訪問屬性調用 unset() 時,__unset() 會被調用
__sleep(),serialize() 函數會檢查類中是否存在魔術方法 __sleep(),如果存在,會先調用 __sleep(),然后才執行序列化操作。這樣就允許對象在被序列化之前做任何清除操作。
__wakeup(),當使用 unserialize() 恢復對象時, 將調用 __wakeup() 成員函數。
__toString(),當一個對象被當作字符串輸出時,會調用 __toString() 輸出的內容,例如 echo $obj;
__invoke(),當以調用函數的方式調用一個對象時,__invoke() 方法會被自動調用,本特性只在 PHP 5.3.0 及以上版本有效。
__set_state(),當調用 var_export() 導出對象時,此方法會被調用
__clone(),對象復制,當使用 clone 關鍵字復制對象時,會調用 __clone(),__clone() 不能被直接調用,使用 clone 復制的對象為淺復制,所以引用屬性仍然會是一個指向原來的變量的引用。
__debugInfo(),當調用 var_dump() 導出對象時,此方法會被調用
__autoload($class_name),加載未定義的類
到此,關于“講解PHP 預定義變量、魔術常量和魔術方法功能與用法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。