ID: 10293 Updated by: mfischer Reported By: [EMAIL PROTECTED] Old Status: Open Status: Closed Bug Type: Class/Object related Operating System: FreeBSD 4.1 RELEASE PHP Version: 4.0.4 New Comment:
Thats the way it works in PHP4. Objects are treated as normal variables and therefore also copied (means, really copied) when assigning or passing around so $foo = &new class; is the right way to avoid this. Closed. Previous Comments: ------------------------------------------------------------------------ [2001-04-11 14:58:51] [EMAIL PROTECTED] here is my script: <?php class Tbug { function add($f) { $this->stuff[] = $f; } function spew() { foreach($this->stuff as $key => $f) echo "stuff is [$f]<BR>"; } } function & addtobug($f, &$bug) { $bug->add($f); return($bug); } // using first choice we have problems, second choice works, why the diff? //$bug = new Tbug(); $bug = &new Tbug(); echo "call1<BR>"; $bug = &addtobug("a", &$bug); echo "call2<BR>"; $bug = &addtobug("b", &$bug); echo "call3<BR>"; $bug = &addtobug("c", &$bug); $bug->spew(); ?> The "work around" is to use the second choice of assigning $bug to the reference of the "new" Object. This does not seem inuitive to me. Why does this code not work otherwise? thanks, tonys. ------------------------------------------------------------------------ Edit this bug report at http://bugs.php.net/?id=10293&edit=1 -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]