PHP试图删除对象的引用

时间:2013-08-10 14:30:55

标签: php arrays reference pass-by-reference

$root = new FileSystemNode("~", true);
$desktop = new FileSystemNode("Desktop", true);
$root->children[$desktop->name] = &$desktop;

...

$q = &$root->children["Desktop"];
unset($q);

我正在做这个奇怪的事情只是为了理解这段代码后面发生了什么。

真实场景:在创建和连接对象(前三行)之后,我可能想要将“桌面”分配给代码中的某个变量,之后我可能想删除它。但是,不幸的是,它根本没有被删除。我仍然可以访问$ root-> children [“Desktop”]。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

从PHP 5开始,对象始终是引用。&运算符对您的示例没有任何影响。


更新:(因为您在评论中提出了问题):

如果您需要对象的独立副本,请使用clone

$q = clone $root->children["Desktop"];