首頁 >後端開發 >php教程 >php中的const和define區別(補充)

php中的const和define區別(補充)

WBOY
WBOY原創
2016-07-30 13:30:39864瀏覽

常數是一個簡單值的識別碼(名字)。如同其名稱所暗示的,在腳本執行期間該值不能改變(除了所謂的魔術常數,它們其實不是常數)。常量預設為大小寫敏感。通常常數標識符總是大寫的。

可以用 define() 函數來定義常數。在 PHP 5.3.0 以後,可以使用 const 關鍵字在類別定義的外部定義常數,而先前版本const 關鍵字只能在類別(class)中使用。一個常數一旦被定義,就不能再改變或取消定義。

常數只能包含標量資料(boolean,integer,float 和 string)。 可以定義 resource 常數,但應盡量避免,因為會造成不可預測的結果。

可以簡單的透過指定其名字來取得常數的值,與變數不同,不應該在常數前面加上 $ 符號。如果常數名稱是動態的,也可以用函數constant() 來取得常數的值。用get_defined_constants() 可以得到所有已定義的常數列表。

常數和變數有如下不同:

  • 常數前面沒有美元符號($); 
  • 常數只能用define() 函數定義,而不能用賦值語句; 
  • 在任何地方定義和存取; 
  • 常數一旦定義就不能被重新定義或取消定義; 
  • 常數的值只能是標量。

Example #1 定義常數

1 1
1

"CONSTANT"
1 1 2define(
,

"Hello world."

);// outputs "Hello world."
// outputs "Hello world."

4 // 輸出"Constant" 並發出一個提示性訊息

Example #2 使用關鍵字const 定義常量
5?
1

</td> <td>// 以下程式碼在PHP 5.3.0 後可以正常運作<code>

'Hello World'
3 constCONSTANT =
;

5
4

?>
Example #3 合法與非法的常數名

02 // 合法的常數名

03

);
03 "something"

04);
"something else"

"something more");

07 define("2FOO",    "something");

)
08 0808

//
09

10

7 "something"
// 這樣就會與你的程式碼相衝突 11
);

12?

12?

在PHP中定義常數時,const與define的區別:

使用const使得程式碼簡單易讀,const本身就是一個語言結構,而define是一個函數。另外const在編譯時比define快很多。

(1).const用於類別成員變數的定義,一經定義,不可修改。 define不可用於類別成員變數的定義,可用於全域常數。

(2).const可在類別中使用,define不能。

(3).const不能在條件語句中定義常數。

例如:

2
1 if(...){

    const'BAR'3
FOO = ;    // 無效的invalid

4(...) {
if

5    // 有效的valid
' 'BAR');

const 
(4).const採用一個普通的常數名稱,define可以採用表達式作為名稱。 1
FOO =

'BAR'

;
2

2

$i$i) {3

$i

, 1
$i); 4 (5).const只能接受靜態的標量,而define可以採用任何表達式。 例如:

1

// 無效的invalid
constBIT_5 = 1 // 無效的invalid 2
// 有效的valid

(6).const定義的常數時大小寫敏感的,而define可透過第三個參數(為true大小寫不敏感)來指定大小寫不敏感)寫是否敏感。
例如:

1

define(

'FOO'

,, true);
'BAR'
2

echo
3
foo; // BAR

相關函數:

define — 定義一個常數

說明:

  name :常數名稱。

知狀況的發生。以小寫

的方式儲存。 )

  透過name 傳回常數的值。此函數也適用

class constants。常數是否存在


說明:

  bool defined ( string $name )

  檢查該名稱的常數是否已定義。 ) 函數只對constants 有效。 ;未定義則回傳FALSE。這包括那些由擴展以及由define()函數創建的常數 以上就介紹了php中的const和define差異(補充),包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn