php定義常量 define vs const


常量一旦定義就不能在改變或者取消。 在php中定義常量可使用define()函數,在php5.3以後一樣可使用const關鍵字來定義常量。php

define 和 const的區別git

語法區別

// 使用define定義常量
define("Pi",3.14);
// 使用const定義常量
const Pi1 = 3.14
複製代碼

定義時期區別

define() 在執行期定義常量,而 const 在編譯期定義常量。 這就意味着不能在函數內,循環內以及 if 語句以內用 const 來定義常量。github

if( true){
    define("STEP",1);
 }
=> true

if( true ){                   
   const STEP = 1;                                                                                  }
PHP Parse error: Syntax error, unexpected T_CONST on line 2
>>> 
複製代碼

命名空間

define() 定義常量在全局根命名空間下面,而const定義的常量會在當前的命名空間下面。express

>>> namespace Test;
>>> define("TEST","test");
=> true
>>> echo  \Test\TEST;
PHP Fatal error:  Undefined constant Test\TEST in eval()'d code on line 1 >>> echo \TEST; test⏎ >>> const TEST1 = "test"; >>> echo \Test\TEST1 test⏎ >>> echo \TEST1 PHP Error: Undefined constant 'TEST1' on line 3 >>> 複製代碼

表達式

define容許你在常量名和常量值中使用表達式,const不支持,這使得define很靈活bash

define('TRANSPORT_METHOD_SNEAKING', 1 << 0); // OK!
const TRANSPORT_METHOD_WALKING = 1 << 1; //Compile error! const can't use expressions as values
複製代碼

類常量

能夠把在類中始終保持不變的值使用const定義爲常量,define不能在類中定義常量函數

<?php
class MyClass {
    const constant = 'constant value';

    function showConstant() {
        echo  self::constant . "\n";
    }
}

echo MyClass::constant . "\n";

$classname = "MyClass";
echo $classname::constant . "\n"; // 自 5.3.0 起

$class = new MyClass();
$class->showConstant();

echo $class::constant."\n"; // 自 PHP 5.3.0 起
?>
複製代碼

原文連接 github.com/DanceSmile/…spa

相關文章
相關標籤/搜索