PHP对象父/子递归
发布时间:2020-12-13 22:41:25 所属栏目:PHP教程 来源:网络整理
导读:我有一个亲子OO关系.父对象具有许多子对象,并且每个子对象都通过引用知道它的父对象. 父母也可以是孩子(基本上是一棵树). 当我在根对象上执行var_dump()时,它会多次显示[“parent”] = RECURSION,并且生成的描述将非常长. 我想知道我做错了什么.如果是的话,
我有一个亲子OO关系.父对象具有许多子对象,并且每个子对象都通过引用知道它的父对象.
父母也可以是孩子(基本上是一棵树). 当我在根对象上执行var_dump()时,它会多次显示[“parent”] => RECURSION,并且生成的描述将非常长. 我想知道我做错了什么.如果是的话,我对“最佳实践”感兴趣. 谢谢您的帮助!
你没有做错什么;您有一个父项具有对其子项的引用,并且每个子项都有一个返回其父项的引用.当var_dump()是根对象时,它会遍历子对象以打印它们,并且由于每个子对象都有对父对象的引用,因此它会向后移动.因为这通常会导致无限循环(parent – > child – > parent – > child – > …),PHP会保留一个已经访问过的对象列表,当它遇到一个时,它就不会尝试再次转储它,而是打印“RECURSION”.
唯一需要注意的是PHP使用引用计数来进行垃圾收集,而像这样的循环结构本身并不能解决.因此,您的脚本将泄漏内存,这可能是也可能不是问题.要解决此问题,您需要手动清理:在父对象超出范围之前,您需要将所有父指针设置为null. 另见:http://bugs.php.net/bug.php?id=33595 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |