首页 > 解决方案 > $this 的 PHP 自动绑定,是复制还是扩展?

问题描述

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

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

标签: phpoopanonymous-functionphp-closures

解决方案


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

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

class Foo
{
    private $test = 1;

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

new Foo();

推荐阅读