This should be fixed now.
Basically in non-compatibility mode == does the same as PHP 4 (it compares object type and properties) and === compares object handles (this is because comparing object handles from our experience with Java isn't used that often and it's very useful to be able to use the PHP 4 == semantics).
In compatibility mode, both == and === compare object type and properties.
In any case, overloaded internal extensions, such as SimpleXML can still overload the cast_object() handler to cast their objects to scalars.


Andi

At 08:24 AM 5/10/2004 +0900, Rui Hirokawa wrote:

I performed the same test with  HEAD (PHP 5.0.0RC3-dev (build: May 9
2004 10:16:50)).

There are no E_NOTICE message now, but,  the problems are still existing with
RC2,

PHP 4.3.6
 same,not same,not same,same
 same,not same,not same,same

PHP 5.0.0-CVS 2004/5/9 (ze1_compatibility_mode = Off)
 same,not same,not same,same
 not same,not same,not same,same

PHP 5.0.0-CVS 2004/5/9 (ze1_compatibility_mode = On)
 same,same,not same,same
 not same,not same,not same,not same

Rui

On Sun, 09 May 2004 19:17:35 +0300
Andi Gutmans <[EMAIL PROTECTED]> wrote:

> Did you check HEAD? I fixed something to do with the comparison. if it
> still doesn't work please let me know.
>
> Andi
>
> At 04:43 PM 5/9/2004 +0900, Rui Hirokawa wrote:
>
> >Hi,
> >
> >I think objects comparison in PHP5 has problems.
> >Here is small sample code,
> >
> ><?php
> >class Foo {
> >   var $v = 1;
> >  }
> >  class Boo {
> >   var $v = 1;
> >  }
> >  $a = new Foo;
> >  $b = new Foo;
> >  $c = new Boo;
> >  $d = new Foo;
> >  $d->v = 2;
> >  $e = $a;
> >
> >// value comparison
> >  echo $a == $b ? "same," : "not same,";
> >  echo $a == $c ? "same," : "not same,";
> >  echo $a == $d ? "same," : "not same,";
> >  echo $a == $e ? "same" : "not same";
> >  echo "\n";
> >// value and type comparison
> >  echo $a === $b ? "same," : "not same,";
> >  echo $a === $c ? "same," : "not same,";
> >  echo $a === $d ? "same," : "not same,";
> >  echo $a === $e ? "same" : "not same";
> >?>
> >
> >The output from PHP4 and PHP5(ze1_compat on/off) is,
> >
> >PHP 4.3.6 :
> >  same,not same,not same,same
> >  same,not same,not same,same
> >
> >PHP 5.0.0RC2   zend.ze1_compatibility_mode=off :
> >  same,not same,not same,same
> >    (Notice: Object of class [Foo|Boo] could not be converted to integer)
> >  not same,not same,not same,same
> >
> >PHP 5.0.0RC2   zend.ze1_compatibility_mode=on :
> >  same,same,not same,same
> >  not same,not same,not same,not same
> >
> >
> >The problem and question are,
> >1. the different class is recognised as same in PHP5 (ze1_compat=on).
> >2. the same object is recognised as different in PHP5 (ze1_compat=on).
> >3. Why integer casting of object was implicitly applied in PHP5
> >    (ze1_compat=off) ?
> >


-- Rui Hirokawa <[EMAIL PROTECTED]>

-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to