PHP中的常量(constant)是指在程序運行期間不變的值。常量一旦被定義,就不能被更改或者重新定義。PHP中有兩種定義常量的方式:const和define。
使用const定義常量:
const SITE_NAME = 'My Website';
echo SITE_NAME; //輸出My Website
使用define函數定義常量:
define('SITE_NAME', 'My Website');
echo SITE_NAME; //輸出My Website
從上述兩段代碼可以看出,const和define都可以用來定義常量,而且使用的語法也非常相似。不過它們之間還有一些區別。
1. const定義的常量只能定義在類中,而define函數可以定義在任何地方(函數、類、甚至是全局空間)。
2. const定義的常量是編譯時定義的,而define函數定義的常量是運行時定義的。這意味著,在調用常量前,const定義的常量就已經存在于內存中,而define定義的常量則是在調用時才會在內存中定義。
下面舉個例子,對兩種定義常量的方式進行比較:
const START_TIME = microtime(true);
function makeSomething(){
sleep(1);
echo microtime(true) - START_TIME;
}
makeSomething();
上面的代碼中,我們使用const定義一個常量START_TIME,并在makeSomething()函數中使用這個常量。由于常量是在編譯時定義的,因此會在程序一開始就定義好。運行上面的代碼會發現輸出0.0000021457672119141,說明常量已經在程序開始時就定義好了。
define('START_TIME', microtime(true));
function makeSomething(){
sleep(1);
echo microtime(true) - START_TIME;
}
makeSomething();
上面的代碼中,我們使用define函數定義一個常量START_TIME,并在makeSomething()函數中使用這個常量。由于常量是在運行時定義的,因此只有在調用makeSomething()函數時才會定義。運行上述代碼會發現輸出大于1,因為常量是在程序中調用makeSomething()函數時才定義的。
總之,const和define都可以用來定義常量,但它們之間還是有區別的。如果需要在類中定義常量或者希望在編譯時定義常量,那么使用const是非常好的選擇。如果需要在函數或全局空間中定義常量,或者希望在運行時定義常量,那么用define函數也很棒。