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]

Reply via email to