ID: 43600
Updated by: [EMAIL PROTECTED]
Reported By: 6eWmA67gxAebq at jeanpierredaviau dot com
Status: Open
Bug Type: Output Control
Operating System: win xp
PHP Version: 5.2CVS-2007-12-14 (snap)
New Comment:
Documentation says:
"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."
Using PHP 5.3.0-dev (cli) (built: Dec 17 2007 10:53:40):
<?php
$obj = new stdClass;
$a = $obj;
unset($obj);
var_dump($a, $obj);
?>
Output:
object(stdClass)#1 (0) {
}
NULL
Previous Comments:
------------------------------------------------------------------------
[2007-12-15 01:06:37] [EMAIL PROTECTED]
Clarifying example:
<?php
class foo {
static $foo = array();
static function test($obj) {
self::$foo[] = $obj;
}
}
class bar {
public function __construct() {
foo::test($this);
}
}
$a = new bar;
unset($a);
var_dump(foo::$foo); // He expects empty array
?>
------------------------------------------------------------------------
[2007-12-14 21:23:39] 6eWmA67gxAebq at jeanpierredaviau dot com
Description:
------------
a static array dont retain a modification
PHP 5.2.2 (cli) (built: May 2 2007 19:18:26)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
with DBG v2.15.5, (C) 2000,2007, by Dmitri Dmitrienko
Reproduce code:
---------------
http://groups.google.com/group/alt.comp.lang.php/msg/79060a6a7c4c806e
Expected result:
----------------
print_r (Registre::getRegistre());
Array
(
[0] => info2 Object
(
[var] => 0
[class] => info2
)
)
Actual result:
--------------
$a = new info();
$b = new info2();
$a = NULL;
print_r (Registre::getRegistre()); //dont print the changed
self::$leRegistre
Array
(
[0] => info Object
(
[var] => 0
[class] => info
)
[1] => info2 Object
(
[var] => 0
[class] => info2
)
)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=43600&edit=1