都是定义静态常量。
都可以定义全局常量。
定义的常量值都是不可以在程序的其他地方改变的。
区别:
1、define不能在类中定义而const可以。
定义方法:
class a {
const FOO = 1;
}
或者直接
const FOO = 1;
define('FOO', 1);
2、const不能在条件语句中定义常量
if (...) {
const FOO = 'BAR'; // invalid
}
但是define可以
if (...) {
define('FOO', 'BAR'); // valid
}
3、const只能接受静态的标量,而define可以采用任何表达式。
const FOO = 'BAR';
for ($i = 0; $i < 32; ++$i) {
define('BIT_' . $i, 1 << $i);
}
const BIT_5 = 1 << 5; // invalid
define('BIT_5', 1 << 5); // valid
4、const 总是大小写敏感,然而define()可以通过第三个参数来定义大小写不敏感的常量
define('FOO', 'BAR', true);
echo FOO; // BAR
echo foo; // BAR
总结:
1.使用const简单易读,它本身是一个语言结构,而define是一个函数,用const定义在编译时比define快很多。
2.在程序设计过程中const可以人为限制在类中定义,使得常量归类,这样使得程序更容易读懂,有利于后期维护。