| 
	
 | 
 Posted by Jochem Maas on 04/20/05 21:21 
Evert|Rooftop Solutions wrote: 
> Hi, 
>  
> I have this piece of code: 
>  class test1 { 
>        var 
>                $data = 'hi', 
>                $node = false; 
>        function test1() { 
>                $this->node =& new test2($this); 
>        } 
>  } 
>  class test2 { 
>  
>        var 
>                $data = 'yoyo', 
>                $root = false; 
>  
>        function test2(&$root) { 
>  
>                $this->root =& $root; 
>  
>        } 
>  
>  
>  } 
>  $test =& new test1(); 
>  echo('<pre>'); 
>  print_r($test); 
>  echo('</pre>'); 
>  
> And it outputs: 
>  
> test1 Object 
> ( 
>    [data] => hi 
>    [node] => test2 Object 
>        ( 
>            [data] => yoyo 
>            [root] => test1 Object 
>                ( 
>                    [data] => hi 
>                    [node] =>  *RECURSION* 
>                ) 
>  
>        ) 
>  
> ) 
> while it should output: 
>  
> test1 Object 
> ( 
>    [data] => hi 
>    [node] => test2 Object 
>        ( 
>            [data] => yoyo 
>            [root] => *RECURSION* 
>  
>        ) 
>  
> ) 
 
does the output of print_r() correlate with whats actually 
happening? i.e. is the first test1 object not a reference of the 
second test1 object (as per the print_r() dump). 
 
what does the following show? (I don't have php4 at hand): 
 
var_dump($test); 
 
also I believe print_r() and var_dump() have a few odditities regarding 
display of recursion with regard to objects... internals mailinglist archive 
might tell you more on that. 
 
does the following show different output? 
 
<?php 
class test1 
{ 
     var $data = 'hi', $node = false; 
     function test1() 
     { 
         $this->node =& new test2(); 
	$this->node->root =& $this; 
     } 
} 
class test2 { var $data = 'yoyo', $root = false; } 
 
$test =& new test1(); 
echo "<pre>"; 
print_r($test); echo "<hr />"; var_dump($test); 
echo "</pre>"; 
?> 
 
>  
>  
> I know there are some difficulties using references in constructors, but  
> I think this should be right.. 
> I'm using PHP/4.3.11. Can anyone tell me what is wrong with this code or  
> why PHP behaves this way? 
 
go for php5 if you can, you'll have alot more fun with object then :-) 
.....no more '&'s for starters. 
 
>  
> regards, 
> Evert 
>
 
[Back to original message] 
 |