Este fragmento de código provoca un error fatal de PHP en 5.6, pero funciona bien en 7.0 y superior. No hay ningún cambio documentado en isset que pueda encontrar que indique que funciona con matrices como constantes.
<?php class Test { const A = [1]; } echo isset(Test::A[0]); ¿Alguien sabe de alguna documentación que indique que esto fue un cambio real? ¿Es seguro usar isset con matrices como constantes?
Error de PHP 5.6.30:
Error fatal: no se puede usar isset() en el resultado de una expresión (puede usar "null !== expresión" en su lugar)
isset() es una construcción de lenguaje y no una función, por lo que quizás se aplique este párrafo (de http://php.net/manual/en/migration70.incompatible.php ):
PHP 7 ahora usa un árbol de sintaxis abstracto al analizar archivos fuente. Esto ha permitido muchas mejoras en el lenguaje que antes eran imposibles debido a las limitaciones en el analizador utilizado en versiones anteriores de PHP, pero ha resultado en la eliminación de algunos casos especiales por razones de coherencia, lo que ha resultado en problemas de compatibilidad con versiones anteriores.