在PHP中定義常量時,可用const與define這兩種方式,那他們到底有什麼區別呢?
php
const用於類成員變量定義,一旦定義且不能改變其值。define定義全局常量,在任何地方均可以訪問。java
define不能定義在類中,而const必須定義在類中,而且const定義的變量必須經過類名::變量名來進行訪問。ide
const不能在條件語句中定義常量。函數
const採用一個普通的常量名稱(靜態的標量),define能夠採用任何表達式做爲名稱。.net
6.使用const簡單易讀,它自己是一個語言結構,而define是一個方法,用const定義在編譯時比define快不少。code
若是在類中定義常量,不能用define,而用const,以下例:blog
推薦:《PHP教程》教程
<?php //在類外面一般這樣定義常量 define("PHP","111cn.net"); class MyClass { //常量的值將始終保持不變。在定義和使用常量的時候不須要使用$符號 const constant = 'constant value'; function showConstant() { echo self::constant . "<br>"; } } echo MyClass::constant . "<br>"; $classname = "MyClass"; echo $classname::constant . "<br>"; // PHP 5.3.0以後 $class = new MyClass(); $class->showConstant(); echo $class::constant."<br>"; // PHP 5.3.0以後 //print_r(get_defined_constants()); //能夠用get_defined_constants()獲取全部定義的常量 ?>
通常是define在類外定義常量,const在類內定義常量,而且const必須經過類名::變量名來進行訪問。可是php5.3以上支持類外經過const定義常量,看以下,這樣是ok的:get
<?php const a = "abcdef"; echo a; ?>
const不能再條件語句中定義常量,可是define是能夠的,以下it
<?php if(1){ const a = 'java'; } echo a; //必錯 ?>
const採用一個普通的常量名稱,define能夠採用表達式做爲名稱
<?phpconst FOO = 'PHP'; for ($i = 0; $i < 32; ++$i) { define('PHP_' . $i, 1 << $i); } ?>
const只能接受靜態的標量,而define能夠採用任何表達式。
<?php const PHP = 1 << 5; // 錯誤 define('PHP', 1 << 5); // 正確 ?>
const自己就是一個語言結構。而define是一個函數。因此使用const速度要快的多,除非你須要使用表達式或者在條件語句中定義常量,否則的話僅僅是爲了代碼的簡單可讀性你都最好要使用const!