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
Hello Jeremy,
Wednesday, October 8, 2008, 12:50:23 AM, you wrote:
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.
And for that exact reason we are adding closures in PHP 5.3.
Best regards,
Marcus