PHP:从 class/method 访问一个变量,两者都定义在同一个闭包中
PHP: access a variable from a class/method, both defined inside the same closure
以下代码按预期工作:
$b = 42;
var_dump("b: " . $b);
class A
{
function foo()
{
global $b;
var_dump("b: " . $b);
}
}
$instance = new A();
$instance->foo();
由于 global
关键字,foo
方法能够访问 $b
。
但是,如果我将所有这些移动到 闭包 中,$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
关键字无关,这与我这里的问题无关)。
在将值存储到 var $b 之前使用 "globalization",它对我来说很好用。片段在这里:
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();
});
以下代码按预期工作:
$b = 42;
var_dump("b: " . $b);
class A
{
function foo()
{
global $b;
var_dump("b: " . $b);
}
}
$instance = new A();
$instance->foo();
由于 global
关键字,foo
方法能够访问 $b
。
但是,如果我将所有这些移动到 闭包 中,$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
关键字无关,这与我这里的问题无关)。
在将值存储到 var $b 之前使用 "globalization",它对我来说很好用。片段在这里:
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();
});