首页 > Web开发 > 详细

php中define()与const的区别,你知道的有多少?

时间:2016-02-12 15:05:49      阅读:181      评论:0      收藏:0      [点我收藏+]

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!