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]