On Fri, Nov 9, 2012 at 2:00 PM, jpauli <jpa...@php.net> wrote: > On Fri, Nov 9, 2012 at 2:18 PM, Christian Stoller <stol...@leonex.de> > wrote: > > I would like to place a suggestion for comparing objects (I hope it is > no problem, because this does not have anything to do with Sara's question > - but it came to my mind when I read her mail). It would be a great feature > if objects could be compared to other objects with ">", "<" and the other > operators, like it is suggested in RFC https://wiki.php.net/rfc/comparable > > The DateTime class offers this feature - it would be nice if this could > be made usable for userland classes/objects, too. > > > I really like that idea, and the patch looks pretty good and looks > backward compatible. > I'm +1 with it > > I'm also +1 with patching the doc to describe the full default compare > behavior. >
Another spot in the docs I would enjoy discussion about <,>,>=,<= comparing two objects: http://php.net/manual/en/language.oop5.object-comparison.php I notice this behavior is suggested in a comment for use in an array_uintersect callback: http://php.tonnikala.org/manual/el/function.array-uintersect.php#72841 Indeed, trying to intersect two arrays of objects with a user callback 'works' with the > comparison operator, but maybe this is just luck, or subject to BC break later? <?php class myclass { function __construct($name) { $this->name = $name; } } $o1 = new myclass('o1'); $o2 = new myclass('o2'); $o3 = new myclass('o3'); $o4 = new myclass('o4'); $a1 = array($o1, $o2, $o3); $a2 = array($o3, $o2, $o4); var_dump(array_uintersect($a1, $a2, function($v1, $v2) { if($v1 === $v2) return 0; if($v1 > $v2) return 1; return -1; })); I'd expect the > comparison there to be roughly equivalent to if(spl_object_hash($v1) > spl_object_hash($v2)), no? Info on the default behavior here would be nice. -nathan