常量一旦定義就不能在改變或者取消。 在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