область действия — PHP: доступ к переменной из класса / метода, оба определены в одном замыкании

Следующий код работает как положено:

$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 ключевое слово, которое не имеет никакого отношения к моей проблеме здесь).

0

Решение

С «глобализацией» переменной var $ b перед сохранением значения она отлично работает для меня. Фрагмент здесь:

call_user_func(function () {
global $b;
$b = 42;
var_dump("b: " . $b);

$instance = new class
{
function foo()
{
global $b;
var_dump("b: " . $b);
}
};

$instance->foo();
});
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]