在PHP中并不代表地址?那么如何在树节点中存储父指针?

Edw*_*ard 2 php tree

当我向树添加节点时,我将其父地址(我想是这样)存储在其中:

-- Client --
$parent = new Node();
$child = new Node();
$parent->add($child)

-- Class Node --
function add($child) {
    $this->setParent(&$this);
    $this->children[] = $child;
}

function setParent($ref_parent) {
    $this->ref_parent = $ref_parent;
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试回显$ child-> ref_parent时,它失败了"可捕获的致命错误:类Node的对象无法转换为字符串...",我使用&cos我不想将父对象存储在其中孩子,但似乎不工作,任何想法?

Fer*_*yer 9

由于您收到的错误消息是"可捕获的致命错误",它表示您使用的是PHP5,而不是PHP4.从PHP5开始,对象总是通过引用传递,因此您不需要使用"&".

顺便问一下:你的问题是什么?它似乎工作正常,你得到的错误是由于你的类无法转换为字符串,所以你不能将它与echo一起使用.尝试实现魔术__toString()方法,以便在显示时显示一些有用的东西echo.


Ign*_*s R 5

不不不.你不能分解为像PHP中的内存地址这样的低级概念.您无法获取值的内存地址.$this和其他对象总是通过引用传递,因此不会复制对象.至少在PHP5中.