Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP自动绑定$this,是拷贝还是扩展?_Php_Oop_Anonymous Function_Php Closures - Fatal编程技术网

PHP自动绑定$this,是拷贝还是扩展?

PHP自动绑定$this,是拷贝还是扩展?,php,oop,anonymous-function,php-closures,Php,Oop,Anonymous Function,Php Closures,当使用在类上下文中定义的匿名PHP函数时,文档会说“当前类会自动绑定到它,使$this在函数的范围内可用” 但我有点困惑这意味着什么,这是指匿名函数有一个类的副本,还是它现在是类的一部分?因此,如果我使用匿名函数对类进行更改,它们将保留在定义匿名函数的原始类中?$PHP中匿名函数中的this变量不是副本,而是绑定,因此如果您更改匿名函数中的$this的内容,父类将受到影响 您可以运行以下代码段检查它: class Foo { private $test = 1; functio

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


但我有点困惑这意味着什么,这是指匿名函数有一个类的副本,还是它现在是类的一部分?因此,如果我使用匿名函数对类进行更改,它们将保留在定义匿名函数的原始类中?

$PHP中匿名函数中的this
变量不是副本,而是绑定,因此如果您更改匿名函数中的
$this
的内容,父类将受到影响

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

class Foo
{
    private $test = 1;

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

new Foo();

谢谢你澄清这一点。如果一个匿名函数有很多调用,并且它改变了
$this
的内容,它们会开始重叠吗,这可能吗?