1

当使用在类上下文中定义的匿名 PHP 函数时,文档说“当前类自动绑定到它,使其$this在函数范围内可用”。

但我有点困惑这意味着什么,这是否意味着匿名函数具有类的副本,或者它现在是类的一部分?那么如果我使用匿名函数对类进行更改,它们会留在定义匿名函数的原始类中吗?

4

1 回答 1

2

$thisPHP中匿名函数内部的变量不是副本,是绑定,所以如果更改$this匿名函数内部的内容,就会影响父类。

您可以运行以下代码段来检查它:

class Foo
{
    private $test = 1;

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

new Foo();
于 2020-05-29T11:58:39.117 回答