Object comparison bug?

php.internals

Christian Stocker

22 years ago
Hi The following came up in a bug report (http://bugs.php.net/?id=29911 , but it doesn't matter, as he tried something which doesn't work either way) <?php class foo {}; $foo1 = new foo(); $foo2 = new foo(); var_dump($foo1 == $foo2); ?> prints now true, but according to Derick and http://talks.php.net/show/migrating-ffm/8 it should print false in PHP 5 Bug or expected behaviour? (I don't care much, since I wouldn't compare objects that way in the first place ;) ) chregu
-- christian stocker | Bitflux GmbH | schoeneggstrasse 5 | ch-8004 zurich phone +41 1 240 56 70 | mobile +41 76 561 88 60 | fax +41 1 240 56 71 http://www.bitflux.ch | chregu@bitflux.ch | gnupg-keyid 0x5CE1DECB

Andi Gutmans

22 years ago
Hi Christian, This was a backwards compatibility issue and therefore, we made sure that PHP 5 behaves the same way as PHP 4. So if both objects are PHP objects it will do a PHP 4 object comparison. If you use === (is identical) then we will only compare handles unless in zend1.compatibility_mode. This should give people the best of both worlds being able to choose comparison (==) or strict identical (===). Andi At 02:17 PM 8/31/2004 +0200, Christian Stocker wrote:

Derick Rethans

22 years ago
On Tue, 31 Aug 2004, Andi Gutmans wrote:
> Hi Christian, > > This was a backwards compatibility issue and therefore, we made sure that > PHP 5 behaves the same way as PHP 4. So if both objects are PHP objects it > will do a PHP 4 object comparison. > If you use === (is identical) then we will only compare handles unless in > zend1.compatibility_mode. > This should give people the best of both worlds being able to choose > comparison (==) or strict identical (===).
Yup, and making this backward compatible was done after I wrote those slides ;-) Derick