## 語法
可以用[define()](http://php.net/manual/zh/function.define.php)函數來定義常量,在PHP5.3.0以后,可以使用const關鍵字在類定義之外定義常量。一個常量一旦被定義,就不能再改變或者取消定義。
常量只能包含標量數據([boolean](http://php.net/manual/zh/language.types.boolean.php),[integer](http://php.net/manual/zh/language.types.integer.php),[float](http://php.net/manual/zh/language.types.float.php) 和 [string](http://php.net/manual/zh/language.types.string.php))。可以定義 [resource](http://php.net/manual/zh/language.types.resource.php) 常量,但應盡量避免,因為會造成不可預料的結果。
可以簡單的通過指定其名字來取得常量的值,與變量不同,不應該在常量前面個加上$符號。如果常量名是動態的,也可以用[constant()](http://php.net/manual/zh/function.constant.php) 來獲取常量的值。用 [get\_defined\_constants()](http://php.net/manual/zh/function.get-defined-constants.php) 可以獲得所有已定義的常量列表。
**Note**: 常量和(全局)變量在不同的名字空間中。這意味著例如 **`TRUE`** 和 $TRUE 是不同的。
如果使用了一個未定義的常量,PHP 假定想要的是該常量本身的名字,如同用字符串調用它一樣(CONSTANT 對應 "CONSTANT")。此時將發出一個 [E\_NOTICE](http://php.net/manual/zh/ref.errorfunc.php) 級的錯誤。參見手冊中為什么 [$foo\[bar\]](http://php.net/manual/zh/language.types.array.php#language.types.array.foo-bar) 是錯誤的(除非事先用 [define()](http://php.net/manual/zh/function.define.php) 將 *bar* 定義為一個常量)。如果只想檢查是否定義了某常量,用 [defined()](http://php.net/manual/zh/function.defined.php) 函數。
常量和變量有如下不同:
* 常量前面沒有美元符號($);
* 常量只能用define()函數定義,而不能通過賦值語句;
* 常量可以不用理會變量的作用域而在任何地方定義和訪問;
* 常量一旦定義就不能被重新定義或者取消定義;
* 常量的值只能是標量。
**Example #1定義常量**
```
<?php
define("CONSTANT","Hello world.");
echo CONSTANT; //outputs "Hello world."
echo Constant; // 輸出"Constant" 并發出一個提示級別錯誤信息
?>
```
目前在 PHP 7 中,常量數組可以通過 define 函數來初始化。
```
define('STORES',['en','fr','ar']);
```
**Example #2 使用關鍵字const 定義常量**
```
<?php
// 以下代碼在PHP5.3.0 后可以正常工作
const CONSTANT = "Hello World":
echo CONSTANT;
```
從 PHP 5.6開始,常量數組可以使用 const 關鍵字來聲明
```
const STORES = ['en','fr','ar'];
```
> Note: 和使用defind()來定義常量相反的是,使用const關鍵字定義常量必須處于最頂端的作用區域,因為用此方法是在編譯時定義的。這就意味著不能在函數內,循環內以及if語句之內用const來定義常量。
- 序言
- 簡介
- PHP是什么?
- PHP能做什么?
- 基本語法
- 類型
- boolean(布爾型)
- integer(整型)
- float(浮點型)
- string(字符串)
- array(數組)
- object(對象)
- callable(可調用)
- resource(資源)
- NULL(無類型)
- 偽類型
- 類型轉換的判別
- 變量
- 基礎
- 預定義變量
- 變量范圍
- 可變變量
- 來自PHP之外的變量
- 常量
- 語法
- 魔術常量
- 表達式
- 運算符
- 運算符優先級
- 算術運算符
- 賦值運算符
- 位運算符
- 比較運算符
- 錯誤控制運算符
- 執行運算符
- 遞增/遞減運算符
- 邏輯運算符
- 字符串運算符
- 數組運算符
- 類型運算符
- 流程控制
- if
- else
- elseif/else if
- 流程控制的替代語法
- while
- do-whille
- for
- foreach
- break
- continue
- switch
- declare
- return
- require
- include
- require_once
- include_once
- goto
- 函數
- 用戶自定義函數
- 函數的參數
- 返回值
- 可變函數
- 內部 (內置)函數
- 匿名函數
- 類與對象
- 簡介
- 基本概念
- 屬性
- 類的自動加載
- 構造函數
- 訪問控制(可見性)