基本介紹
常量是一個不能改變值且沒有 $
美元符號的變量,通常我們會將常量的命名用大寫表示(嚴格區分大小寫),但它在作用域上和普通變量有所不同,它屬于 超全局變量,一旦定義了,在任何地方都能使用。
常量的值應該是標量數據類型(Boolean
、Integer
、Float
、String
),盡量避免不要使用其他類型的值。
常量一旦定義,不能對其進行賦值,且不能重新定義或是取消定義。
常量可以在任意地方定義和訪問。
使用const
的方式定義常量,不能在if
、循環、函數中定義。
// 普通常量
define('MIN_SIZE', 10);
define('MAX_SIZE', 100);
echo MIN_SIZE. ' : ' . MAX_SIZE . '<br />';
// 第二種方式
const MIN_LENGTH = 100;
const MAX_LENGTH = 1000;
echo MIN_LENGTH. ' : ' . MAX_LENGTH . '<br />';
// 動態名常量定義
$name = 'TEMP';
define($name, 'hello world');
// 動態名常量獲取
echo constant($name) . ' : ' . TEMP . '<br />';
// 檢查常量是否已經定義
echo defined($name) . '<br />'; // true
// 普通常量
define('MIN_SIZE', 10);
define('MAX_SIZE', 100);
// 定義類
class Example{
// 類的常量
const MIN_SIZE = 20;
const MAX_SIZE = 200;
// 測試方法
static function func(){
// 20 : 100
echo self::MIN_SIZE . " : " . MAX_SIZE;
}
}
// 調用測試
Example::func();
預定義常量
PHP給網站內置了很多的預定義常量,這些常量要么來自PHP內核,要么來之各種擴展。
通過get_defined_constants()
函數可以獲取當前已經定義的所有常量。
有幾個經常使用但卻又不太一樣的常量,它們稱之為 魔法常量,從本質上來說,它們并不是常量,因為它們的值會改變。
名稱 | 說明 |
---|---|
__LINE__ | 獲取當前所在文件中的行號 |
__FILE__ | 獲取當前文件的完整路徑 |
__DIR__ | 獲取當前文件所在的目錄 |
__FUNCTION__ | 獲取當前函數的名稱,如functionName
|
__CLASS__ | 獲取當前類名 |
__TRAIT__ | 獲取當前Trait的名稱 |
__METHOD__ | 獲取類的方法名稱,如Class::functionName
|
__NAMESPACE__ | 獲取當前命名空間的名稱 |