#### 1. 什么魔術(shù)常量 --- 預(yù)定義常量:預(yù)定義常量就是PHP內(nèi)置的常量,預(yù)先定義好的 PHP有很多預(yù)定義常量,比如:PHP_VERSION(版本號)、PHP_OS(操作系統(tǒng))。 這些普通的預(yù)定義常量在程序中的值是固定的,不會因為在不同的位置而改變自身的值。 在PHP有八個特殊的預(yù)定義常量,它們的值會隨著它們在代碼中的位置改變而改變,我們稱之為魔術(shù)常量。 #### 2. PHP的8個魔術(shù)常量 --- | 序號 | 魔術(shù)常量 | 示例 | 描述 | | ------------ | ------------ | ------------ | ------------ | | 1 | \_\_LINE\_\_ | 5 | 返回魔術(shù)常量輸出時所在的行號 | | 2 | \_\_FILE\_\_ | E:\www\1.php | 返回文件路徑(絕對路徑) | | 3 | \_\_DIR\_\_ | E:\www | 返回文件所在的目錄,當(dāng)前文件位置:E:\www\1.php | | 4 | \_\_FUNCTION\_\_ | taskList | 返回函數(shù)名稱,區(qū)分大小寫,不在函數(shù)中時返回空字符串 | | 5 | \_\_CLASS\_\_ | app\controller\User | 返回當(dāng)前所在類名,包含命名空間,區(qū)分大小寫 | | 6 | \_\_METHOD\_\_ | app\controller\User:test | 返回當(dāng)前所在方法名,包含命名空間,區(qū)分大小寫 | | 7 | \_\_NAMESPACE\_\_ | app\controller | 返回當(dāng)前命名空間,區(qū)分大小寫 | | 8 | \_\_TRAIT\_\_ | app\controller\Person | 返回當(dāng)前所在Trait名,包含命名空間,區(qū)分大小寫 | #### 3. 使用示例 --- 前四個魔術(shù)常量 ```php <?php echo __LINE__;//3 echo __FILE__;//E:\www\1.php echo __DIR__;//E:\www echo userList();//userList function userList() { echo __FUNCTION__; } ``` 后四個魔術(shù)常量 ```php <?php namespace app\controller; trait Person { public static function demo() { echo __TRAIT__;//app\controller\Person } } class User { use Person; public static function test() { echo __CLASS__;//app\controller\User echo __METHOD__;//app\controller\User::test } } User::test(); User::demo(); echo __NAMESPACE__;//app\controller ```