2016-06-03 4 views
0

Перед обновлением до PHP 7, у меня был этот код и он вернулся истинный

var_dump(isset($$_SESSION['payment'])); 
var_dump(is_object($$_SESSION['payment'])); 
var_dump($_SESSION['payment']); // string 'moneyorder' 

После обновления до PHP 7, я переписал тот же код внутри класса, но теперь она возвращает ложные

var_dump(isset(${$_SESSION['payment']})); 
var_dump(is_object(${$_SESSION['payment']})); 
var_dump($_SESSION['payment']); // string 'moneyorder' 

у вас есть идея, почему?

Спасибо

+0

Что делает 'var_dump ($ _ SESSION [ "платеж"])' шоу? – miken32

+0

Просто точность: до того, как данные были в простых файлах, и теперь одни и те же данные находятся в классе. – kurama

+0

var_dump ($ _ SESSION ['payment']); См. Выше – kurama

ответ

1

Примечание the PHP documentation for superglobals содержит это предупреждение:

Примечания: Переменный переменных

Суперглобальных не может быть использована в качестве переменных переменных внутри функций или методов класса.

сохранить его в локальную переменную вместо:

$payment = $_SESSION['payment']; 
var_dump(isset(${$payment})); 
var_dump(is_object(${$payment}));