首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 魔術方法與魔術常數完整速查表:13 大魔術方法、5 大魔術常數一覽

     編輯:PHP 相關知識

集中整理 PHP 物件導向 13 個魔術方法觸發時機、用途,以及 5 個魔術常數輸出內容,方便開發時快速查閱。

13 大魔術方法

方法觸發時機典型用途
__construct()實例化 new Class()初始化資源、注入依賴
__destruct()物件銷毀 (引用歸零、腳本結束)釋放連線、關閉檔案、記錄日誌
__call($name, $args)呼叫不存在的方法動態代理、多載、API 自動路由
__callStatic($name, $args)靜態呼叫不存在的方法靜態工廠、ActiveRecord 查詢
__get($name)讀取不可存取屬性虛擬屬性、延遲載入、資料轉換
__set($name, $value)寫入不可存取屬性驗證、觸發事件、同步快取
__isset($name)isset($obj->prop)配合 __get 實作虛擬屬性存在性
__unset($name)unset($obj->prop)清理虛擬屬性、觸發同步
__toString()echo $obj、字串語境物件輸出摘要、除錯、模板渲染
__invoke()$obj() 當函式呼叫可呼叫物件、策略模式、閉包替代
__clone()clone $obj深層複製、重設 ID、複製資源
__sleep()serialize($obj) 前指定序列化屬性、關閉連線
__wakeup()unserialize($data) 後重建連線、還原狀態
__set_state($arr)var_export($obj) 時靜態工廠還原物件 (配合 var_export)
__autoload($class)使用未定義類別 (PHP 7.2 棄用)自動載入類別檔案 (改用 spl_autoload_register)

5 大魔術常數

常數輸出內容注意事項
__LINE__目前行號
__FILE__完整絕對路徑 (含檔名)PHP 4.0.2+ 固定絕對路徑
__DIR__目錄絕對路徑 (不含檔名)PHP 5.3+ 等同 dirname(__FILE__)
__FUNCTION__函式名稱 (區分大小寫)PHP 4.3+、PHP 5 保留定義時大小寫
__CLASS__類別名稱 (區分大小寫)PHP 4.3+、PHP 5 保留定義時大小寫
__METHOD__類別方法名稱PHP 5.0+
__NAMESPACE__目前命名空間名稱PHP 5.3+

常見組合技

  • __sleep + __wakeup:大型物件序列化只存 ID、反序列化自動從 DB 重載。
  • __get + __set + __isset + __unset:實作動態屬性袋 (如 Laravel Model)。
  • __call + __callStatic:建立流暢介面 (Fluent API) 或動態 Proxy。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved