Re: Classes, Constructors, References and Recursion
| From: | Jochem Maas | Date: | Wed, 20 Apr 2005 18:21:05 +0000 |
| Subject: | Re: Classes, Constructors, References and Recursion | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-213522@lists.php.net to get a copy of this message | ||
Evert|Rooftop Solutions wrote:
Hi, I have this piece of code: class test1 {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); }} 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*))
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