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
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php