Open DanceSmile opened 6 years ago
常量一旦定义就不能在改变或者取消。 在php中定义常量可以使用define()函数,在php5.3之后同样可以使用const关键字来定义常量。
define 和 const的区别
// 使用define定义常量 define("Pi",3.14); // 使用const定义常量 const Pi1 = 3.14
define() 在执行期定义常量,而 const 在编译期定义常量。 这就意味着不能在函数内,循环内以及 if 语句之内用 const 来定义常量。
if( true){ define("STEP",1); } => true if( true ){ const STEP = 1; } PHP Parse error: Syntax error, unexpected T_CONST on line 2 >>>
define() 定义常量在全局根命名空间下面,而const定义的常量会在当前的命名空间下面。
>>> 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很灵活
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 起 ?>
php定义常量 define vs const
常量一旦定义就不能在改变或者取消。 在php中定义常量可以使用define()函数,在php5.3之后同样可以使用const关键字来定义常量。
define 和 const的区别
语法区别
定义时期区别
define() 在执行期定义常量,而 const 在编译期定义常量。 这就意味着不能在函数内,循环内以及 if 语句之内用 const 来定义常量。
命名空间
define() 定义常量在全局根命名空间下面,而const定义的常量会在当前的命名空间下面。
表达式
define允许你在常量名和常量值中使用表达式,const不支持,这使得define很灵活
类常量
可以把在类中始终保持不变的值使用const定义为常量,define不能在类中定义常量