define()与const的区别:
1.define() 在执行期定义常量,而 const 在编译期定义常量。这样 const 就有轻微的速度优势(即性能稍微好点),但不值得考虑这个问题,除非你在构建大高并发系统。
2.define()
将常量放入全局作用域,即使在命名空间中使用define方法定义常量也属于全局作用域的。不能使用 define()
定义类常量(类常量使用const定义),命名空间作用域内的常量使用const定义如: namespace j; const
ABC=‘100‘;。
3.define() 允许你在常量名和常量值中使用表达式,而 const 则都不允许。 这使得 define() 更加灵活。
代码例子证明如下:
$jelly = 99;
define(‘J_NUM‘, $jelly + 1);//证明define定义的常量值可以使用表达式
echo J_NUM; //100
//以下2行 证明不允许const定义的常量值中使用表达式
const C_NUM = $jelly + 1; //报语法错误: Parse error: syntax error, unexpected T_VARIABLE in ... ,把这行注释掉就可以正常运行了.
const C_NUM2 = 200;
echo C_NUM2; //200
4.define() 可以在 if() 代码块中调用,但 const 不行。
if($jelly==100) {
define(‘J_100‘, ‘YES‘);
} else {
define(‘J_100‘, ‘NO‘);
}
echo J_100; //NO
if($jelly==100) {
const C_100 = ‘YES‘; //报语法错误: Parse error: syntax error, unexpected T_CONST in ... 说明const不能在if代码块中定义
} else {
const C_100 = ‘NO‘;
}
5.在同一作用域下,define()常量名和const定义的常量名不能相同.
define(‘JJ‘, ‘hello‘);
const JJ = ‘world‘; //报Notice: Constant JJ already defined in ... 证明了第5点问题
6. const可以定义类常量和命名空间常量.
如 namespace abc;
const ABC = ‘a‘;
class hello {
const C_NUM = 8;
}
php中define()与const的区别,你知道的有多少?
原文:http://www.cnblogs.com/syj198920/p/5187008.html