CakePHP(1.3) + PHP4 でXMLのserializeとかいろいろやってると,Nesting level too deep – recursive dependency?と延々いわれます.
これは,xmlのネストが再帰的になってて延々深くなってくよ.っていうものらしいのですが,PHP5だと通るのだけど,4だと通りません.
で,具体的な解決策ですが,
引っかかってるのが,Cakephpのcake->libs->xml.phpの384行目あたりです,
function compare($node) { $keys = array(get_object_vars($this), get_object_vars($node)); return ($keys[0] === $keys[1]); }
ここの比較演算子が===となってますが,PHP5だと===として扱われますが,PHP4だと===は==と扱われるため,ずーっと比較し続けます.
なので,強引ですがこうしてやると,PHP4で動作します.
function compare($node) { $keys = array(get_object_vars($this), get_object_vars($node)); return ($keys[0]); //return ($keys[0] === $keys[1]); }
要は処理だけさせて,確認の判定させてないんですね.
一応,これで狙ったとおりの動きはしてくれまうs.
実際は,PHP5とPHP4のどっちで動作しているか判定させて,処理を分けるといいですが,,,,
可能なら素直にPHP5を使いましょう.