You are here: Re: [PHP] Classes, Constructors, References and Recursion « PHP « IT news, forums, messages
Re: [PHP] Classes, Constructors, References and Recursion

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
>

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация