Следующий код работает должным образом:
$b = 42;
var_dump("b: " . $b);
class A
{
function foo()
{
global $b;
var_dump("b: " . $b);
}
}
$instance = new A();
$instance->foo();
Метод foo
может получить доступ к $b
благодаря ключевому слову global
.
Однако, если япереместите все это в замыкание , $b
больше не является «глобальной» переменной и не работает (с оператором global
или без него):
call_user_func(function () {
$b = 42;
var_dump("b: " . $b);
class A
{
function foo()
{
global $b;
var_dump("b: " . $b);
}
}
$instance = new A();
$instance->foo();
});
Как я могу отредактировать этот код так, чтобы метод имел доступ к переменным «верхнего уровня закрытия» (не глобальным)?
Мне не удалось найти тот же вопрос по SO, не стесняйтесь закрыть этот вопросесли есть дубликат (а не ключевое слово use
, которое не имеет отношения к моей проблеме здесь).