PHP中定義常量define與const

咱們一般把不常常變的值定義成常量,常量通常用所有大寫來表示,前面不加美圓符號,也可減小團隊開發的出錯。那麼define和const有什麼區別呢?函數


一、const是一個語言結構;而define是一個函數,能夠經過第三個參數來指定是否區分大小寫。true表示大小寫不敏感,默認爲falsespa

define('PI', 3.14, true);

二、const簡單易讀,編譯時要比define快不少。code

三、const可在類中使用,用於類成員常量定義,定義後不可修改;define不能在類中使用,可用於全局變量blog

class MyClass
{
    const CONS = '常量值';

    function showConstant() {
        echo  self::CONS . PHP_EOL;
        echo  constant('CONS');      
    }
}

四、const是在編譯時定義,所以必須處於最頂端的做用區域,不能在函數,循環及if條件中使用;而define是函數,也就是能調用函數的地方均可以使用開發

if (...){
const FOO = 'BAR';    // 無效的invalid
}
if (...) {
define('FOO', 'BAR'); // 有效的valid
}

五、const只能用普通的常量名,define常量名中能夠有表達式io

const  FOO = 'BAR';
for ($i = 0; $i < 32; ++$i) {
define('BIT_' . $i, 1 << $i);
}

六、const定義的常量只能是靜態常量,define能夠是任意表達式編譯

const BIT_5 = 1 << 5;    // valid since PHP 5.6
define('BIT_5', 1 << 5); // 有效的valid
相關文章
相關標籤/搜索