常量

目錄

常量是一個簡單值的標識符(名字)。如同其名稱所暗示的,在腳本執(zhí)行期間該值不能改變(除了所謂的 魔術常量,它們其實不是常量)。常量大小寫敏感。傳統(tǒng)上常量標識符總是大寫的。

注意:

在 PHP 8.0.0 之前,使用 define() 定義的常量可能不區(qū)分大小寫。

常量名和其它任何 PHP 標簽遵循同樣的命名規(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");

// 下面的定義是合法的,但應該避免這樣做:(自定義常量不要以__開頭)
// 也許將來有一天 PHP 會定義一個 __FOO__ 的魔術常量
// 這樣就會與你的代碼相沖突
define("__FOO__""something");

?>

注意: 在這里,字母指的是 a-z,A-Z,以及從 128 到 255(0x80-0xff)的 ASCII 字符。

superglobals 一樣,常量的范圍是全局的。常量可以從腳本的任何地方被訪問,而不考慮作用域。有關作用域的更多信息請閱讀手冊中的變量范圍。

注意: 從 PHP 7.1.0 開始,類常量可以聲明為 protected 或 private 的可見性, 使其只在其定義的類的層次范圍內(nèi)可用。