Intro
When writing compare functions, I often end up with a snippet like:
if ($a === $b) {
return 0;
}
if ($a > $b) {
return 1;
}
if ($b > $a) {
return -1;
}
This is lots of code for intending to basically express:
If a is greater than b, return 1.
If a is smaller than b, return -1.
if a is equal to b, return 0.
If a is not comparable to b, for example when comparing "1" with 1, return null.
Ruby
In Ruby there is the spaceship operator <=>
, serving exactly this purpose.
irb(main):002:0> 1 <=> 0
=> 1
irb(main):003:0> 0 <=> 1
=> -1
irb(main):004:0> 1 <=> 1
=> 0
irb(main):005:0> "1" <=> 1
=> nil
irb(main):006:0>
PHP implementation
To learn how to build a composer package, I also came up with a PHP implementation of the spaceship operator (in the form of just a simple class), which can be found on Github.