Почему переменные не определены внутри include, определенного в массиве $ GLOBALS? - PullRequest
2 голосов
/ 02 ноября 2010

Я пытаюсь получить доступ к динамически именуемой переменной, которая определена внутри включаемого файла после включения, например:

require "/path/to/my/include.php";
echo $_VariableDefinedInInclude; // outputs the variable
echo $GLOBALS["NameOfTheVariableDefinedInInclude"]; // nothing outputs?

Любая идея, почему переменная отсутствует в массиве $ GLOBALS?Есть ли такая функция, как constant (), но для стандартных переменных, которые я мог бы использовать для динамического доступа к переменной по ее имени?

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 января 2011

Учитывая, что переменная имеет динамическое имя, возможно:

echo $GLOBALS[$GLOBALS["NameOfTheVariableDefinedInInclude"]];

сделает свое дело.

0 голосов
/ 02 ноября 2010

Массив $ GLOBALS применяется только к переменным, установленным с глобальным ключевым словом.Если вы включаете другой файл, он по сути совпадает с кодом, находящимся в одном файле.Другими словами, у вас все еще есть доступ к этой переменной в той же области видимости.Нет необходимости использовать $ GLOBALS или что-либо еще.Кроме того, если эта переменная является константой, вы можете использовать const (PHP 5.3) или определить ('KEY', $ val), чтобы определить ее как константу.

...