簡體   English   中英

PHP:從類/方法訪問變量,它們都在同一個閉包內定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM