PHP $this 的自动绑定,是复制还是扩展?

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

当使用在 class 上下文中定义的匿名 PHP 函数时,文档说 "the current class is automatically bound to it, making $this available inside of the function's scope".

但是我有点不明白这是什么意思,它是说匿名函数有一个 class 的副本还是现在是 class 的一部分?因此,如果我使用匿名函数对 class 进行更改,它们将保留在定义匿名函数的原始 class 中?

$this 匿名函数内部的变量 PHP 不是一个副本,而是一个绑定,所以如果你改变匿名函数内部 $this 的内容,父 class 会受到影响。

您可以查看 运行 这段代码:

class Foo
{
    private $test = 1;

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

new Foo();