|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2007-12-14 21:23 UTC] 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
)
)
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 09:00:02 2025 UTC |
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 ?>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