我有一个父子面向对象关系。父对象有许多子对象,每个子对象都通过引用知道它的父对象。
父母也可以是孩子(基本上它是一棵树).
当我做一个var_dump()在根对象上它说[“父”]=>递归很多次,生成的描述会很长。
我想知道我是否做错了什么。如果是,我对“最佳实践”感兴趣。
谢谢您的帮助!
你没有做错任何事;您有一个对其子级有引用的父级,并且每个子级都有对其父级的引用。当你var_dump()
根对象,它迭代子对象以打印它们,并且由于每个子对象都有对父对象的引用,因此它会返回。因为这通常会导致无限循环(父 -> 子 -> 父 -> 子 -> ...),PHP 会保留一个已经访问过的对象列表,当遇到一个时,它不会尝试转储再次打印,但打印出“RECURSION”。
唯一需要注意的是 PHP 使用引用计数来进行垃圾收集,并且像这样的循环结构本身不会解析。因此,您的脚本将泄漏内存,这可能是问题,也可能不是问题。要解决这个问题,您需要手动清理:在父对象超出范围之前,您需要将所有父指针设置为 null。
也可以看看:http://bugs.php.net/bug.php?id=33595 http://bugs.php.net/bug.php?id=33595
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)