php 在对象中递归 坑,php – 致命错误:嵌套级别太深 – 递归依赖?

  • Post author:
  • Post category:php


我有一个复杂的层次结构的嵌套对象,所有的子对象(存储父类中的对象数组),其中包含一个链接到其父类的属性:相当简单直接,没有任何真正的问题。如果我在层次结构中做任何对象的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父项中,使父关系“正确”…我已经开始这样做了。

但是,我对这个错误感到好奇,并且想知道有没有人遇到过它(以及你如何处理它)。