在PHP中,define和const都可以定义一个常量,但是两者在实现和用法上还是有一些区别的:
可以在PHP的const实现上,有这么一行声明:
T_CONSTT_STRING=static_scalar{zend_do_declare_constant($2,$4TSRMLS_CC);}
1、可以看到,使用const的时候,还会把当前名字空间转换成小写,然后添加到常量名的上面上。因此const是具有名字空间归属的。
Define的实现如下:
1、没有加上名字空间,所以是不具备有名字空间的。
?PHP
Classtest{
Constt=;
}
Echotest::t;//输出
?
这样子,const就可以定义类常量了。但是如果使用define,从源码中可以看到,他是禁止常量名中含有::这个的,因此他是不能够定义类常量的。而如果将其放在类中,则是会提示语法错误的:
?PHP
Classtest{
Define(‘t’,’’);//语法错误
}
?
根据上面两份源码,可以得出两者的区别主要是:
const是编译时转成成常量的,而define是在运行时转换的。
define是定义在一个全局范围内的,也就是说,他不可以用在类中或者是名字空间中。但是const便可以。
const不可以用在if语句中,define可以。
define定义的常量的名和值都可以使用表达式,但是const不可以。
北京哪家医院看白癜风好北京治白癜风比较好的医院