在升级到PHP 7之前,我有这个代码,返回true
var_dump(isset($$_SESSION['payment']) );
var_dump(is_object($$_SESSION['payment']));
var_dump($_SESSION['payment']); // string 'moneyorder'
升级到PHP 7后,我在类中重写了相同的代码,但现在返回false
var_dump(isset(${$_SESSION['payment']}));
var_dump(is_object(${$_SESSION['payment']}));
var_dump($_SESSION['payment']); // string 'moneyorder'
你知道为什么吗?
谢谢
答案 0 :(得分:1)
注意the PHP documentation for superglobals包含此警告:
注意:变量
Superglobals不能用作函数或类方法中的变量变量。
将其保存到本地变量:
$payment = $_SESSION['payment'];
var_dump(isset(${$payment}));
var_dump(is_object(${$payment}));