ID: 25484
Updated by: [email]sniperphp.net[/email]
Reported By: nick at itomic dot com
-Status: Open
+Status: Feedback
Bug Type: Zend Engine 2 problem
Operating System: Redhat 9
-PHP Version: 4.3.2
+PHP Version: 5.0.0b2
New Comment:

ZE2 is in PHP 5. And provide a working example script, not some pseudo
code..




Previous Comments:
------------------------------------------------------------------------

[2003-09-11 04:22:40] nick at itomic dot com

sorry the third paragraph should read:

I can see the situation where an object needs to be passed a reference
to an object, _not_ a copy of an object(i.e. when dealing with
obbject trees, or lists).

------------------------------------------------------------------------

[2003-09-11 04:20:23] nick at itomic dot com

Description:
------------
when a class function accepts a reference parameter & stores that
reference in the object, if that parameter passed in is created &
recreated inside a loop, then the reference that the class points to
changes to the last value of the parameter in the loop.

This is confusing behavious, but it is not necessary buggy behavious no
PHP's behalf, maybe it just requires better doentation.

I can see the situation where an object needs to be passed a reference
to an object, _not_ a copy of a reference (i.e. when dealing with
obbject trees, or lists).

In the below example this may differ from when I am passing in some
pre-existing variable (i.e. a variable returned from a class iterator),
rather than a variable that is created in the loop

Reproduce code:
---------------
<?php
// plz note this is pseudo code

$res = mysql_query(...);

// this part of the code has been tested

while ($row = mysql_fetch_assoc($res))
{
$foos[] =& new foo($row);
}

foreach($foos as $key => $foo)
{
var_dump($foos[$key]->_var);
}

class foo
{
var $_var = NULL;
function foo(&$var)
{
$this->_var =& $var;
}
}


Expected result:
----------------
something like:
array(2) {
["StageID"]=>
string(1) "1"
["StageName"]=>
string(10) "Incomplete"
}
array(2) {
["StageID"]=>
string(1) "2"
["StageName"]=>
string(8) "Complete"
}
array(2) {
["StageID"]=>
string(1) "3"
["StageName"]=>
string(10) "Not Needed"
}
array(2) {
["StageID"]=>
string(1) "4"
["StageName"]=>
string(7) "Waiting"
}
array(2) {
["StageID"]=>
string(1) "5"
["StageName"]=>
string(9) "Submitted"
}

Actual result:
--------------
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)


------------------------------------------------------------------------


--
Edit this bug report at [url]http://bugs.php.net/?id=25484&edit=1[/url]