ID:               44933
 User updated by:  remon at menpmedia dot nl
 Reported By:      remon at menpmedia dot nl
 Status:           Bogus
 Bug Type:         Class/Object related
 Operating System: Fedora Core 4
 PHP Version:      5.2.6
 New Comment:

[EMAIL PROTECTED] ~]# php
<?php
print phpversion();
echo "\n";
$one = new stdClass();
$one->variable = 'hello';

$two = $one;
$two->variable = 'goodbye';

var_dump($one);
?>

5.2.4
object(stdClass)#3 (1) {
  ["variable"]=>
  string(5) "hello"
}

[EMAIL PROTECTED] ~]#


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

[2008-05-07 09:36:16] remon at menpmedia dot nl

?????
Now I am really confused.

Im running Fedora Core 8 / x64, php 5.2.4, and i have the, by your
statement, incorrect result

I understand this has changed and I understand the implication (review
all our code which at this point amounts to several million lines of
code :( )
I also understand that i need to 'clone' an object. Shame that PHP4
doesn't understand this keyword and throws an error; so much for writing
universal code.

Thank you for all your comments and views.

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

[2008-05-07 09:31:27] [EMAIL PROTECTED]

I am running this on 64bit linux, and on 32bit as well. I get the same
correct result.

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

[2008-05-07 09:28:04] remon at menpmedia dot nl

Thank you scottmac, this helps a bit.

Should I consider PHP5/x64/linux bugged then for NOT reflecting this
behavioural change ?

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

[2008-05-07 09:23:45] [EMAIL PROTECTED]

The behavior changed between php4 and php5. When you pass around an
object it uses the same instance.

The clone keyword will let you duplicate an object.

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

[2008-05-07 09:23:25] remon at menpmedia dot nl

Bogus ???

$two = $one;

is not the same as

$two =& $one;

PHP4 all platforms understand this
PHP5 on x64 understands this

so, if this is bogus, how do I make a copy of an object and not have
changes to the copy affect the original object?

Arrays are unaffected as are normal variables

So, again, if this is bogus, the following is then true;

the assignment operator ' = ' makes a copy of a variable on the
righthand side EXCEPT when the righthandside is an object

This does not make sense.

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

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/44933

-- 
Edit this bug report at http://bugs.php.net/?id=44933&edit=1

Reply via email to