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

Reply via email to