Hi Adam, Am 19.02.2015 um 22:40 schrieb Adam Harvey: > RFC: https://wiki.php.net/rfc/comparable > PR: https://github.com/php/php-src/pull/1097
I see a little problem here by allowing any comparison. Comparing is used for ordering, but you can easily construct ordering mechanisms that simply don't work: class A implements Comparable { public $value; function compareTo($other) { if ($other instanceof A) { return $this->value <=> $other->value; } else { return -1; } } } class B implements Comparable { public $value; function compareTo($other) { if ($other instanceof B) { return $this->value <=> $other->value; } else { return -1; } } } $a = new A(); $a->value = 1; $b = new B(); $b->value = 2; $a->compareTo($b); // -1 $b->compareTo($a); // -1 If you now have a mixed list of objects of A and B, the actual order in the list completely depends whether A's compareTo() method is called or B's compareTo() method. I think comparison should always be symmetric: $a < $b <=> $b > $a Otherwise the behavior is nearly unpredictable/random. As we have no method overloading, the only viable option I see is to only allow comparison of objects of the same type. Thanks Dennis -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php