PHP:类属性根据我的意愿链接

时间:2014-01-14 21:50:47

标签: php

我对此失去了理智。我已经将我的课程解构为基础知识并且它仍在发生。 所以这堂课:

class Insanity
{
    protected $simon;
    protected $garfunkel;

    public function __construct()
    {
        $this->simon = new stdClass();
        $this->garfunkel = new stdClass();
    }
}

一切都很好,花花公子 如果我$this->simon->name = 'paul';$this->garfunkel->name = 'art';他们都是快乐的单独变种。

直到我做$this->simon = $this->garfunkel;

从这一点开始,它们会被链接/引用或者其他,所以当我$simon->name = 'homer';时,它就成了两者的名字。

即使我$this->simon->whatTheF = 'uck';$garfunkel也会以该属性结束,尽管快速var_dump()声称这两个变量仍然是单独的(按名称)。

有人知道为什么吗?

1 个答案:

答案 0 :(得分:2)

$simon$garfunkel不包含对象本身。它们只是对象的引用。你也可以称它们为指针。如果您执行$simon = $garfunkel,则只需复制此引用,因此$simon将指向与$garfunkel完全相同的对象。

如果您想复制对象本身,PHP会为您提供clone关键字:

$simon = clone $garfunkel;