此代码片段在5.6中导致PHP致命错误,但在7.0及以上版本中运行良好。没有记录在案的对isset的更改,我可以找到它可以将数组作为常量使用。
<?php
class Test
{
const A = [1];
}
echo isset(Test::A[0]);有人知道有任何文件表明这是一个实际的变化吗?用数组作为常量使用isset安全吗?
PHP 5.6.30错误:
致命错误:不能对表达式的结果使用isset() (可以使用"null !==表达式“)
发布于 2017-04-28 04:44:32
isset()是一个语言结构,而不是一个函数,所以这一段(来自http://php.net/manual/en/migration70.incompatible.php)也许适用于:
PHP 7现在在解析源文件时使用抽象语法树。这允许对语言进行许多改进,这些改进以前由于PHP早期版本中使用的解析器的限制而无法实现,但由于一致性原因,移除了一些特殊情况,从而导致了向后兼容性中断。
https://stackoverflow.com/questions/43519439
复制相似问题