我們經(jīng)常把不經(jīng)常變的值定義成常量,常量一般用全部大寫來表示,前面不加美元符號,那么define和const有什么區(qū)別呢?
常量是一個簡單的標(biāo)識符。在腳本執(zhí)行期間該值不能改變(除了所謂的魔術(shù)常量,他們其實不是常量)。常量默認(rèn)大小寫敏感。通常常量標(biāo)識符總是大寫的。
可以用define()函數(shù)來定義常量。在php5.3.0以后,可以使用const關(guān)鍵字在類定義的外部定義常量,php7可以定義數(shù)組常量了,先前版本const關(guān)鍵字只能在類(html' target='_blank'>class)中使用。一個常量一旦被定義,就不能再改變或取消定義。
?php// 以下代碼在 PHP 5.3.0 后可以正常工作const USERNAME = 周伯通 echo USERNAME.PHP_EOL;echo constant( USERNAME const ZHOUUSERNAME = 周伯通九陰真經(jīng) define( MYUSERNAME , 周伯通九陰真經(jīng)2 echo pre print_r(get_defined_constants());?
常量和變量有如下不同:
1、const是一個語言結(jié)構(gòu);而define是一個函數(shù),可以通過第三個參數(shù)來指定是否區(qū)分大小寫。true表示大小寫不敏感,默認(rèn)為false
2、const簡單易讀,編譯時要比define快很多。
3、const可在類中使用,用于類成員常量定義,定義后不可修改;define不能在類中使用,可用于全局變量
?phpclass MyClass{ const USER = 周伯通 function showConstant() { echo self::USER . PHP_EOL; echo constant( USER // 注意:Warning: constant(): Couldn t find constant USER $class = new MyClass();$class- showConstant();4、const是在編譯時定義,因此必須處于最頂端的作用區(qū)域,不能在函數(shù),循環(huán)及if條件中使用;而define是函數(shù),也就是能調(diào)用函數(shù)的地方都可以使用
?php$x = true;if ($x==1){ //const FOO = BAR // 無效的invalidif ($x==1){ define( FOO , BAR // 有效的valid echo FOO;}以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,更多相關(guān)內(nèi)容請關(guān)注PHP !
相關(guān)推薦:
PHP中的ob_start用法解析
PHP empty()函數(shù)的說明
以上就是PHP中Define和Const的區(qū)別的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點
疑難解答
圖片精選