PHP 教學 - 常數 (Constants)
介紹PHP中常術的用法,包含語法、命名規則和魔術常數 (Magic constant)。
語法
變數的值會改變而稱為變數,那相對於變數的常數,則是恆常不變的值而稱作常數 (Constant)。常數在宣告之後,就無法再改變它的值,除了魔術常數 (magic constant) 有可能會改變,因為他並非是真正的常數。常數是有大小寫之分,而常數的命名規則和變數一樣,以正規表示法表示如下:
1 | [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* |
常數的使用和特性如下:
- 使用
define()
函式或const
關鍵字宣告常數 (PHP 5.3.0 之後),但const
關鍵字無法用在函式中,且和static
類似,必須直接指定值,不可運算。 - 常數只能是數值的值,包括布林、整數、浮點數和字串,雖然也可以設為資源,但有可能會出現問題。
- 使用常數未定義時,會視為字串使用。可以使用
defined()
函式來判斷是否已定義。 - 和變數不一樣,常數不需要使用錢號 (
$
) 做開頭。除直接使用外,也可以用constant()
函式取得常數值。 - 常數沒有範圍 (或當作是全域),任何地方宣告使用常數都為同一份。
1 | var_dump(FOOL); // string(4) "FOOL", 自動當作字串 |
根據官方文件記載,命名規則應該與變數命名相同,但實際上使用 define()
函式卻可以使用不合法的命名,但使用時必須透過 constant()
函式取值。
1 | define("3M", "300cm"); |
另外可以利用 get_defined_constants()
函式取得目前所有的常數。除此之外,類別的常數成員用法與此不同,之後再做討論。
魔術常數
PHP 中有很多預定義常數,其中許多部分是來自不同的 Extension,除此之外,PHP 有另外七種魔術常數 (Magic constant),可以取得特別的資訊。雖然他們叫作常數,不過事實上會在不同的地方而有不同的值。
名稱 | 描述 |
---|---|
__LINE__ | 目前在檔案中的行數 |
__FILE__ | 目前檔案的完整檔案路徑 |
__DIR__ | 目前檔案所在的目錄完整路徑 (PHP 5.3.0 加入) |
__FUNCTION__ | 目前所在的函式名稱 (PHP 4.3.0 加入) |
__CLASS__ | 目前的類別名稱 (PHP 4.3.0 加入) |
__METHOD__ | 類別的成員函式名稱 (PHP 5.0.0 加入) |
__NAMESPACE__ | 目前的命名空間名稱 (PHP 5.3.0 加入) |
一些使用範例如下:
1 | namespace NamespaceName; |
延伸閱讀
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 小殘的程式光廊!
Comment