У меня есть небольшая дилемма, кажется, я не могу получить доступ $GLOBALS
в следующем коде:
$closure = function()
{
$key = 'some_key'; //define a key
$GLOBALS[$key] = 'a value'; //assign a value to the key position on $GLOBALS -- THIS WORKS
$variable = "GLOBALS"; //grab GLOBALS as a string
$ref = $$variable; //grab a reference to the variable defined in $variable -- THIS FAILS
echo $ref[$key]; //output the value
};
$closure();
//output: Undefined variable: GLOBALS in test.php
тогда как это здесь работает нормально:
$key = 'some_key';
$GLOBALS[$key] = 'a value';
$variable = "GLOBALS";
$ref = $$variable;
echo $ref[$key]; //outputs "a value"
Странное решение моей проблемы заключается в следующем (но я хотел бы знать, почему мой код не работает):
$closure = function()
{
$globals = $GLOBALS; //this works
$GLOBALS = $GLOBALS; //this... doesn't work however
$key = 'some_key';
$GLOBALS[$key] = 'a value';
$variable = "globals";
$ref = $$variable;
echo $ref[$key];
};
$closure();
Причина, по которой я переживаю эту проблему, состоит в том, чтобы избежать следующего:
$key = 'key'; // or variable, where the output is GLOBALS (not variable)
$GLOBALS[$key] = 'something different, ergo key no longer points towards GLOBALS[KEY]';
$variable = "GLOBALS";
$ref = $$variable;
echo $ref[$key];
// outputs Notice: Undefined index: something different, ergo key no longer points towards GLOBALS[KEY] in test.php
Задача ещё не решена.
Других решений пока нет …