#44677 [Opn->Bgs]: Function Parameters as non reference resets orignial Value
| From: | jani@php.net | Date: | Wed, 09 Apr 2008 11:25:33 +0000 |
| Subject: | #44677 [Opn->Bgs]: Function Parameters as non reference resets orignial Value | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-124114@lists.php.net to get a copy of this message | ||
ID: 44677
Updated by: jani@php.net
Reported By: kudung at gmx dot net
-Status: Open
+Status: Bogus
Bug Type: Class/Object related
Operating System: Debian 4
PHP Version: 5.2.5
New Comment:
RTFM: http://www.php.net/manual/en/language.oop5.basic.php
"When assigning an already created instance of a class to a new
variable, the new variable will access the same instance as the object
that was assigned. This behaviour is the same when passing instances to
a function. A copy of an already created object can be made by cloning
it."
Previous Comments:
------------------------------------------------------------------------
[2008-04-09 10:01:55] kudung at gmx dot net
Description:
------------
Hi,
just discovered that an parameter wich passed to an function as an non
reference of type object is handeld as an reference,
but if i pass a parameter of type array to the function it is handled
as a copie as it should be.
Reproduce code:
---------------
class foob {
function testbar( $das )
{
unset( $das->ding );
}
}
function testbar( $das )
{
unset( $das->ding );
}
$ers = new stdClass();
$ers->ding = '323';
testbar($ers);
var_dump( $ers );
$ers2 = new stdClass();
$ers2->ding = '323';
$foob = new foob();
$foob->testbar($ers2);
var_dump( $ers2 );
Expected result:
----------------
Expected that properties still exists:
object(stdClass)#1 (1) { ["ding"]=> string(3) "323" }
object(stdClass)#2 (1) { ["ding"]=> string(3) "323" }
Actual result:
--------------
Output:
object(stdClass)#1 (0) { }
object(stdClass)#2 (0) { }
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=44677&edit=1