5.6中的isset致命错误但7中罚款

Ben*_*est 13 php

这段代码在5.6中导致PHP致命错误,但在7.0及更高版本中正常工作.没有记录的变化isset我可以发现它表明它可以作为常量使用数组.

<?php
class Test
{
    const A = [1];
}

echo isset(Test::A[0]);
Run Code Online (Sandbox Code Playgroud)

有谁知道任何文件说明这是一个实际的变化?使用isset数组作为常量是否安全?

PHP 5.6.30错误:

致命错误:不能对表达式的结果使用isset()(可以使用"null!== expression"代替)

CXJ*_*CXJ 2

isset()是一个语言构造而不是一个函数,所以也许这一段(来自http://php.net/manual/en/migration70.inknown.php)适用:

PHP 7 现在在解析源文件时使用抽象语法树。这允许对语言进行许多改进,而这些改进以前由于早期版本的 PHP 中使用的解析器的限制而无法实现,但出于一致性原因删除了一些特殊情况,从而导致向后兼容性中断。