基本介紹
常量是一個(gè)不能改變值且沒(méi)有 $
美元符號(hào)的變量砚嘴,通常我們會(huì)將常量的命名用大寫(xiě)表示(嚴(yán)格區(qū)分大小寫(xiě)),但它在作用域上和普通變量有所不同涩拙,它屬于 超全局變量际长,一旦定義了,在任何地方都能使用兴泥。
常量的值應(yīng)該是標(biāo)量數(shù)據(jù)類(lèi)型(Boolean
工育、Integer
、Float
搓彻、String
)如绸,盡量避免不要使用其他類(lèi)型的值。
常量一旦定義旭贬,不能對(duì)其進(jìn)行賦值怔接,且不能重新定義或是取消定義。
常量可以在任意地方定義和訪(fǎng)問(wèn)稀轨。
使用const
的方式定義常量扼脐,不能在if
、循環(huán)奋刽、函數(shù)中定義瓦侮。
// 普通常量
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 />';
// 動(dòng)態(tài)名常量定義
$name = 'TEMP';
define($name, 'hello world');
// 動(dòng)態(tài)名常量獲取
echo constant($name) . ' : ' . TEMP . '<br />';
// 檢查常量是否已經(jīng)定義
echo defined($name) . '<br />'; // true
// 普通常量
define('MIN_SIZE', 10);
define('MAX_SIZE', 100);
// 定義類(lèi)
class Example{
// 類(lèi)的常量
const MIN_SIZE = 20;
const MAX_SIZE = 200;
// 測(cè)試方法
static function func(){
// 20 : 100
echo self::MIN_SIZE . " : " . MAX_SIZE;
}
}
// 調(diào)用測(cè)試
Example::func();
預(yù)定義常量
PHP給網(wǎng)站內(nèi)置了很多的預(yù)定義常量,這些常量要么來(lái)自PHP內(nèi)核杨名,要么來(lái)之各種擴(kuò)展脏榆。
通過(guò)get_defined_constants()
函數(shù)可以獲取當(dāng)前已經(jīng)定義的所有常量。
有幾個(gè)經(jīng)常使用但卻又不太一樣的常量台谍,它們稱(chēng)之為 魔法常量须喂,從本質(zhì)上來(lái)說(shuō)吁断,它們并不是常量,因?yàn)樗鼈兊闹禃?huì)改變坞生。
名稱(chēng) | 說(shuō)明 |
---|---|
__LINE__ | 獲取當(dāng)前所在文件中的行號(hào) |
__FILE__ | 獲取當(dāng)前文件的完整路徑 |
__DIR__ | 獲取當(dāng)前文件所在的目錄 |
__FUNCTION__ | 獲取當(dāng)前函數(shù)的名稱(chēng)仔役,如functionName
|
__CLASS__ | 獲取當(dāng)前類(lèi)名 |
__TRAIT__ | 獲取當(dāng)前Trait的名稱(chēng) |
__METHOD__ | 獲取類(lèi)的方法名稱(chēng),如Class::functionName
|
__NAMESPACE__ | 獲取當(dāng)前命名空間的名稱(chēng) |