魔術常量列表
| 常量 | 說明 | 典型應用場景 |
__FILE__ | 當前文件完整路徑(含文件名) | 框架入口計算項目根目錄:dirname(__FILE__) |
__DIR__ | 當前文件所在目錄(PHP 5.3+) | 包含文件時避免相對路徑混亂:require __DIR__ . '/config.php' |
__LINE__ | 當前行號 | 日誌記錄、異常堆疊定位:error_log("Error at line " . __LINE__) |
__CLASS__ | 當前類名(區分大小寫) | 基類中獲取子類名:static::class (PHP 5.5+) |
__METHOD__ | 當前方法名(含類名) | 調試輸出:__METHOD__ . ' called' |
__FUNCTION__ | 當前函數名 | 通用函數內部記錄調用者 |
__NAMESPACE__ | 當前命名空間名 | 動態實例化:new __NAMESPACE__ . '\Model\User' |
__TRAIT__ | 當前 Trait 名 | Trait 衝突排查 |
代碼演示
<?php
echo '當前文件:', __FILE__, '<br/>';
echo '當前目錄:', __DIR__, '<br/>';
echo '第 ', __LINE__, ' 行<br/>';
echo '第 ', __LINE__, ' 行<br/>';
echo '第 ', __LINE__, ' 行<br/>';
class Human {
public static function test() {
echo '類名:', __CLASS__, '<br/>';
echo '方法:', __METHOD__, '<br/>';
}
}
Human::test();
注意事項
- 魔術常量不可修改,但值隨上下文變化(故稱「魔術」)。
__DIR__ 等同 dirname(__FILE__),更簡潔。
- 在
eval() 或動態代碼中,__FILE__ 可能不準確。
- 命名空間下
__CLASS__ 包含完整限定名(如 App\Controller\User)。