常量是一個簡單值的標(biāo)識符(名字)。如同其名稱所暗示的,在腳本執(zhí)行期間該值不能改變(除了所謂的 魔術(shù)常量,它們其實不是常量)。常量大小寫敏感。傳統(tǒng)上常量標(biāo)識符總是大寫的。
注意:
在 PHP 8.0.0 之前,使用 define() 定義的常量可能不區(qū)分大小寫。
常量名和其它任何 PHP
標(biāo)簽遵循同樣的命名規(guī)則。合法的常量名以字母或下劃線開始,后面跟著任何字母,數(shù)字或下劃線。用正則表達式是這樣表達的:
^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
。
還可以使用 define() 函數(shù)來定義包含保留字或非常規(guī)名稱的常量,這類常量可以通過 constant() 函數(shù)來獲取名稱,但是非常不推薦這種用法。
請參見用戶空間命名指南。
示例 #1 合法與非法的常量名
<?php
// 合法的常量名
define("FOO", "something");
define("FOO2", "something else");
define("FOO_BAR", "something more");
// 非法的常量名
define("2FOO", "something");
// 下面的定義是合法的,但應(yīng)該避免這樣做:(自定義常量不要以__開頭)
// 也許將來有一天 PHP 會定義一個 __FOO__ 的魔術(shù)常量
// 這樣就會與你的代碼相沖突
define("__FOO__", "something");
?>
注意: 在這里,字母指的是 a-z,A-Z,以及從 128 到 255(0x80-0xff)的 ASCII 字符。
和 superglobals 一樣,常量的范圍是全局的。常量可以從腳本的任何地方被訪問,而不考慮作用域。有關(guān)作用域的更多信息請閱讀手冊中的變量范圍。
注意: 從 PHP 7.1.0 開始,類常量可以聲明為 protected 或 private 的可見性, 使其只在其定義的類的層次范圍內(nèi)可用。