PHP中的Define和Const區別

咱們常常把不常常變的值定義成常量,常量通常用所有大寫來表示,前面不加美圓符號,那麼define和const有什麼區別呢?javascript

常量是一個簡單的標識符。在腳本執行期間該值不能改變(除了所謂的魔術常量,他們其實不是常量)。常量默認大小寫敏感。一般常量標識符老是大寫的。php

能夠用define()函數來定義常量。在php5.3.0之後,可使用const關鍵字在類定義的外部定義常量,php7能夠定義數組常量了,先前版本const關鍵字只能在類(class)中使用。一個常量一旦被定義,就不能再改變或取消定義。java

複製代碼
<?php
// 如下代碼在 PHP 5.3.0 後能夠正常工做
const USERNAME = '周伯通';
echo USERNAME.PHP_EOL;
echo constant("USERNAME");

const ZHOUUSERNAME = '周伯通九陰真經';

define('MYUSERNAME','周伯通九陰真經2');
echo "<pre>";
print_r(get_defined_constants());
?>
複製代碼

常量和變量有以下不一樣:數組

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

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

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

複製代碼
<?php
class 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();
複製代碼

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

複製代碼
<?php
$x = true;
if ($x==1){
    //const FOO = 'BAR';    // 無效的invalid
}
if ($x==1){
    define('FOO', 'BAR'); // 有效的valid
    echo FOO;
}
複製代碼
相關文章
相關標籤/搜索