RFC: SPL Comparator interface
| From: | Jeremy | Date: | Tue, 07 Oct 2008 22:50:23 +0000 |
| Subject: | RFC: SPL Comparator interface | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-40881@lists.php.net to get a copy of this message | ||
Something that would be extremely useful is a comparator interface in SPL, which could be used to easily implement sorting for objects.
Example:
class Foo implements Comparator
{
// is numeric for this example
public $bar;
//implements compare method from Comparator interface
public function compare($that)
{
//simple example; will return < 1 if this is less
//than that; zero if they're equal; > 1 if this is
//greater than that
return $this->bar - $that->bar;
}
}
Then, if I had an array of Foo objects, I could just call some kind of spl_sort function on the array which would use my comparator to sort them.
I realize this can be kludged with usort(), but I think there should be a better, OOP-ier way to do it.
I also realize that a similar effect could be achieved by defining an SPL PriorityQueue-ish collection rather than an array, but I think there ought to be a better way. Java has a Comparator interface which works in much the same way, if that helps my case at all.
Jeremy