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

Reply via email to