我们经常把不经常变的值定义成常量,常量一般用全部大写来表示,前面不加美元符号,那么define和const有什么区别呢?
1.使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多。
2.const可在类中使用,用于类成员常量定义,定义后不可修改;define不能在类中使用,可用于全局变量。
<?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();
3.const只能接受静态的标量,而define可以采用任何表达式。
<?php
const BIT_5 = 1 << 5; // 无效的invalid
define('BIT_5', 1 << 5); // 有效的valid