为何const DEBUG_FILE定义会报Constant expression contains invalid operations错误?
为什么PHP代码
const DEBUG_FILE = dirname(__FILE__) . '/debug.txt';会触发“Constant expression contains invalid operations”错误? 这是因为PHP对常量定义的表达式有严格限制:
- 不管是全局
const还是类内常量,定义时必须使用编译阶段就能确定结果的常量表达式,不能包含需要运行时才能计算的内容。 dirname(__FILE__)是函数调用,函数的执行结果要到代码运行时才能算出;即使通过.连接字符串,整个表达式也变成了运行时求值的内容,不符合常量定义的规则。- 直白来说,常量定义只能用字面量、已定义的常量,或者纯粹的字面量组合运算,不能掺函数调用、变量这类动态元素。
如果需要动态生成常量值,可以改用define()函数,它是运行时执行的,支持动态计算:
define('DEBUG_FILE', dirname(__FILE__) . '/debug.txt');
内容的提问来源于stack exchange,提问作者alancc
相关产品推荐
相关产品推荐

