我有一个复杂的层次结构的嵌套对象,所有的子对象(存储父类中的对象数组),其中包含一个链接到其父类的属性:相当简单直接,没有任何真正的问题。如果我在层次结构中做任何对象的var_dump,我将在转储中获得一个递归的引用,就像我预期的那样。
FIRSTGEN
_children array of objects of type SECONDGEN
SECONDGEN #1
_parent object of type FIRSTGEN
_children array of objects of type THIRDGEN
THIRDGEN #1
_parent object of type SECONDGEN
THIRDGEN #2
_parent object of type SECONDGEN
SECONDGEN #2
_parent object of type FIRSTGEN
_children array of objects of type THIRDGEN
THIRDGEN #3
_parent object of type SECONDGEN
我最近在该层次结构中添加了一些新的元素,并且它们没有遵循相同的模式。它们存储在顶级父项中的对象数组中,但包含将其链接回的属性,而不是父对象,而是一个兄弟。当我现在做一个var_dump时,我得到一个“致命错误:嵌套级别太深 – 递归依赖”。
FIRSTGEN
_children_1 array of objects of type SECONDGEN_1
SECONDGEN_1 #1
_parent object of type FIRSTGEN
_children array of objects of type THIRDGEN
THIRDGEN #1
_parent object of type SECONDGEN_1
THIRDGEN #2
_parent object of type SECONDGEN_1
SECONDGEN_1 #2
_parent object of type FIRSTGEN
_children array of objects of type THIRDGEN
THIRDGEN #3
_parent object of type SECONDGEN_1
_children_2 array of objects of type SECONDGEN_2
SECONDGEN_2 #1
_parent object of type SECONDGEN_1
除了var_dump()之外,代码中的其他内容都能正常工作。我已经尝试创建一个更简单的例子来演示这个问题,所以我可以在提出这个问题时提供一个例子;但是在一个简短的测试中,只能在我更复杂的代码中才能复制它。
我知道解决方案是重构关系,使我的_children_2数组的SECONDGEN_2对象被保存在适当的SECONDGEN_1父项中,使父关系“正确”…我已经开始这样做了。
但是,我对这个错误感到好奇,并且想知道有没有人遇到过它(以及你如何处理它)。