以下代码按预期工作:
$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
关键字无关的内容与我的问题无关)。