On Mon, 04 Oct 2010 00:18:36 +0100, Stas Malyshev <smalys...@sugarcrm.com> wrote:

* The current behavior for>,<, etc. is completely useless. It's
unpredictable and it doesn't even establish a total order:

$a = new stdclass;
$a->prop = null;
$b = new stdclass;
$b->prop2 = null;

var_dump($a>  $b); //false
var_dump($a == $b); //false
var_dump($b>  $a); //false

That's because there's no total ordering of generic objects that can make sense. Only very specific objects - such as ones representing numeric qualities or having numeric properties - can be ordered, most of objects are unordered. And comparing objects with scalars automagically might bring a lot of surprises as nobody really expects $a == $b and $b == $a to be different now.

I never defended comparison of objects against scalars (though this is already possible, in a limited sense). Perhaps I ought to have changed the subject.

I'm just saying that the current comparisons for user classes is either very limited (==) or completely useless (<, >, >=, <=). Given that, we could implement a *limited* mechanism for overloading those operators in user-land. If limited to objects of the same class (or with one operand of a subclass of the other), this could actually make the comparison operators useful with little potential for damage. It would also not be unprecedented since it's already allowed for internal classes.

--
Gustavo Lopes

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

Reply via email to