簡體   English   中英

PHP $this的自動綁定,是copy還是extend?

[英]PHP automatic binding of $this, is it a copy or an extend?

當使用在 class 上下文中定義的匿名 PHP function 時,文檔說“當前的 class 自動綁定到它,使$this在函數范圍內可用”。

但我有點不明白這是什么意思,這是否意味着匿名 function 有 class 的副本,或者它現在是 class 的一部分? 因此,如果我使用匿名 function 對 class 進行更改,它們將保留在定義匿名 function 的原始 class 中嗎?

PHP 中匿名 function 中的$this變量不是副本,而是綁定,因此如果更改匿名 function 中$this的內容,父 class 將受到影響。

您可以檢查它是否運行此代碼段:

class Foo
{
    private $test = 1;

    function __construct()
    {
        $func = function() {
            $this->test = 2;
        };
        $func();
        var_dump($this);
    }
};

new Foo();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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