在php中,define()函數(shù)用于定義一個(gè)常量,語(yǔ)法“define($name, $value , $case_insensitive)”;參數(shù)“$case_insensitive”用于指定常量是否大小寫敏感,默認(rèn)是大小寫敏感的,值設(shè)定為true則表示大小寫不敏感。常量一旦被定義就不能被重新定義或者取消定義。
本教程操作環(huán)境:windows7系統(tǒng)、PHP8版、DELL G3電腦
define是PHP中的一個(gè)內(nèi)置函數(shù),用于定義一個(gè)常量。
常量是一個(gè)簡(jiǎn)單的標(biāo)識(shí)符。在腳本執(zhí)行期間該值不能改變(除了所謂的魔術(shù)常量,他們其實(shí)不是常量)。常量默認(rèn)大小寫敏感。通常常量標(biāo)識(shí)符總是大寫的。
常量類似變量,不同之處在于:在設(shè)定以后,常量的值無(wú)法更改常量名,不需要開(kāi)頭的美元符號(hào) ($),作用域不影響對(duì)常量的訪問(wèn),常量值只能是字符串或數(shù)字。
define()函數(shù)定義常量
合法的常量名只能以字母和下劃線開(kāi)始,后面可以跟著任意長(zhǎng)度的字母、數(shù)字或下劃線。在 PHP 中可以通過(guò) define() 函數(shù)定義一個(gè)常量,define() 函數(shù)的語(yǔ)法如下:
define($name, $value , $case_insensitive)
-
$name 必選參數(shù),常量名稱(需要使用雙引號(hào)或單引號(hào)包裹)
-
$value 必選參數(shù),常量的值
-
$case_insensitive 可選參數(shù),指定是否大小寫敏感,默認(rèn)是大小寫敏感的,設(shè)定為 true 則表示大小寫不敏感
<?php header("Content-type:text/html;charset=utf-8"); define('WebSite', 'php中文網(wǎng)'); echo WebSite.'<br>'; ?>
擴(kuò)展知識(shí):
const關(guān)鍵字定義常量
在php5.3.0以后,可以使用const關(guān)鍵字在類定義的外部定義常量,先前版本const關(guān)鍵字只能在類(class)中使用。
語(yǔ)法:
const 常量名 = 常量值;
示例:
<?php const FOO = 'BAR'; echo FOO.'<br>'; ?>
define() 和 const 的區(qū)別:
const是在編譯時(shí)定義常量,而define()方法是在運(yùn)行時(shí)定義常量。
const不能用在if語(yǔ)句中, defne()能用在if語(yǔ)句中。
if(...) { const FOO = 'BAR';//錯(cuò)誤 } if(...) { define('FOO', 'BAR');//正確 }
define()的一個(gè)常用場(chǎng)景是先判斷常量是否已經(jīng)定義再定義常量:
if(defined('FOO)) { define('FOO', 'BAR') }
const 定義常量時(shí),值只能是靜態(tài)標(biāo)量(數(shù)字, 字符串, true,false, null), 而define()方法可以把任意表達(dá)式的值用作常量的值。從PHP5.6開(kāi)始const也允許把表達(dá)式用作常量的值了。
const BIT_5 = 1 << 5; //PHP5.6后支持,之前的PHP版本不支持 define('BIT_5', 1 << 5);// 所有PHP版本都支持const 只允許簡(jiǎn)單的常量名,而define()可以把任何表達(dá)式的值用作常量名
for ($i = 0; $i < 32; $i++) { define('BIT_' . $i, 1 << $i); }
const 定義的常量常量名是大小寫敏感的,而傳遞true給define()方法的第三個(gè)參數(shù)時(shí)可以定義大小寫不敏感的常量。
define('FOO', 'BAR', true); echo FOO; //BAR echo foo; //BAR
上面列舉的都是const相較define()而言的一些缺點(diǎn)或者不靈活的地方,下面我們看一下為什么我個(gè)人推薦用const而不是define()來(lái)定義常量(除非要在上述列舉的場(chǎng)景中定義常量)。
const 具有更好的可讀性,const是語(yǔ)言結(jié)構(gòu)而不是函數(shù),而且與在類中定義類常量的形式保持一致。
const在當(dāng)前的命名空間中定義常量, 而define()要實(shí)現(xiàn)類似效果必須在定義時(shí)傳遞完整的命名空間名稱:
namespace ABC; //To define the constant ABCFOO: const FOO = 'BAR'; define('ABCFOO', 'BAR');
推薦學(xué)習(xí):《PHP視頻教程》