Antony Dovgal wrote:
On 06.06.2007 01:10, [EMAIL PROTECTED] wrote:
<?php
class class1{
public $c2;
function __construct($c2){
$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 15
$t->$tt->$t->$tt->$t->$tt->$t->$tt->$t->$tt->$t and so on.
So you get endless recursion when comparing the objects.
Although 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.
<?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 Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php