当前位置: 首页 > 后端技术 > PHP

defineVSconst

时间:2023-03-30 00:15:52 PHP

php定义常量有两种方式:define和const。两者有什么区别?constCONSTANCE='const';define('CONSTANCE','const');从php5.3开始,可以在类定义之外定义const关键字。常量const可以在类内部定义,define不可以。const定义的常量在当前命名空间,define必须写一个具体的命名空间来定义执行的命名空间。classFoo{constBAR=2;}classFoo2{define("BAR",3);//无效}//命名空间示例namespaceA{constA1=1;//在命名空间A中define('A2',2);//全局可调用define('A\A3',3);//在命名空间A}命名空间B{中使用const\A\A1;使用常量\A\A3;回声A1;回声A2;//全局调用echoA3;}const是在编译阶段定义常量,define是在预处理阶段定义常量const在编译阶段定义常量,定义常量时必须在最顶层作用域。所以不能在if之类的条件语句中定义。define定义常量,也称为宏定义。宏可以被描述为根据一系列预定义的规则替换某些文本模式。define可以存在于分支中。理论上,使用const的处理速度会比define快一点。const只接受标量数据,(例如整数、字符串、布尔值和浮点数等);define可以接受任何表达式define('BIT_5',1<<5);常量BIT_5=1<<5;//5.6以后才有效从php5.6开始,const也可以接受数组和表达式define可以接受资源类型,const不能,const常量名只能是简单的字符,define可以是任意表达式constSTR='string';$i=1;define("STR_".$i,STR);const是区分大小写的,define可以通过第三个参数控制大小写。另外,const和define定义的常量数组可以改变元素吗?defined可以用来检查const定义的常量吗?定义vsconst宏