hls*_*lon 4 php const constants
从Constants手册:
常量的名称遵循与PHP中的任何标签相同的规则.有效的常量名称以字母或下划线开头,后跟任意数量的字母,数字或下划线.作为正则表达式,它将如此表达:[a-zA-Z_\x7f-\xff] [a-zA-Z0-9_\x7f-\xff]*
但:
define ("0000X" , 1);
Run Code Online (Sandbox Code Playgroud)
不抛出任何错误或通知并defined返回true:
var_dump ( defined ( "0000X" ) ); // true
Run Code Online (Sandbox Code Playgroud)
当然,在尝试使用此常量时,它会产生:
解析错误:语法错误,意外的'X'(T_STRING),期待','或';' 在[...] [...]第3行
Const, 另一方面
const 0000X = 2;
Run Code Online (Sandbox Code Playgroud)
在初始化时抛出错误,避免错误使用:
解析错误:语法错误,意外的'0000'(T_LNUMBER),在[...] [...]第1行预期标识符(T_STRING)
如果有人想看到这个:
这是解析器引擎的限制.当const您使用时,本身就受到代码标记化的限制,因为根据定义,以数字开头的标记被视为数字,这是许多数学表达式所要求的.这就是您unexpected T_LNUMBER在该用法中看到错误的原因.
由于define是一个以字符串作为参数的语言构造,它在标记化上没有错误,因此可以解析并执行它,但最终它的使用仍然在标记化上失败.它看起来像一个错误,define不会检查它对我的可用性的论证,但更可能是PHP的历史怪癖,没有人敢于修复不知道可能会破坏什么.您可以为它提交错误报告,并查看PHP开发人员的意见.
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |