[英]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();
});
如何編輯此代碼,以便該方法可以訪問“ closure top-level”(不是全局)變量?
我無法在SO上找到相同的問題,如果有重復,可以隨意關閉此問題(與use
關鍵字無關,與我的問題無關)。
在將值存儲到其中之前,對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();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.