Re: Recursive classes ... possible bug?
| From: | mark@cyanox.nl | Date: | Tue, 05 Jun 2007 22:20:47 +0000 |
| Subject: | Re: Recursive classes ... possible bug? | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-30098@lists.php.net to get a copy of this message | ||
Antony Dovgal wrote:
On 06.06.2007 01:10, mark@cyanox.nl wrote:<?php class class1{ public $c2; function __construct($c2){ $this->c2 = $c2; } } class class2{ public $c1; function test(){ $this == $this->c1; // no error. $this == $this; // errors. } } $tt = new class2(); $t = new class1($tt); $tt->c1 = $t; $tt == $t; // no error. //$t == $t; // errors. //$tt == $tt; // errors. $tt->test(); // errors. ?><?php class class1{ public $c2; function __construct($c2){$t->$tt->$t->$tt->$t->$tt->$t->$tt->$t->$tt->$t and so on. So you get endless recursion when comparing the objects.$this->c2 = $c2;} } class class2{ public $c1; function setC1($c1){$this->c1 = $c1;} function test(){echo $this == $this->c1->c2?'equals':'not equals'; // Somehow this if statement triggers the error.} } $tt = new class2(); $t = new class1($tt); $tt->setC1($t); var_dump($t); $tt->test(); ?> I get the error: Fatal error: Nesting level too deep - recursive dependency? in /home/cyanox/DEV/test_object_recursion.php on line 15Although it is obvious that there is a recursion I think this simple example should work without error.Sure, if you have any proposals/ideas - feel free to share them. Actually theoretically it should not give an error. I just stumbled upon this odd behavior when doing something very odd which would not work anyway so I can't really think of a situation where the correct behavior would be needed. Anyway the following also gives the error.