/**
  * Checks ifa given string is greater than another
  * @param  string|version $v1 The first version
  * @param  string|version $v2 The second version
  * @return boolean
  */
 public static function gt($v1, $v2)
 {
     if (!$v1 instanceof version) {
         $v1 = new version($v1);
     }
     if (!$v2 instanceof version) {
         $v2 = new version($v2);
     }
     // Major version number
     $ma1 = $v1->getMajor();
     $ma2 = $v2->getMajor();
     if ($ma1 < 0 && $ma2 >= 0) {
         return false;
     }
     if ($ma1 >= 0 && $ma2 < 0) {
         return true;
     }
     if ($ma1 > $ma2) {
         return true;
     }
     if ($ma1 < $ma2) {
         return false;
     }
     // Minor version number
     $mi1 = $v1->getMinor();
     $mi2 = $v2->getMinor();
     if ($mi1 < 0 && $mi2 >= 0) {
         return false;
     }
     if ($mi1 >= 0 && $mi2 < 0) {
         return true;
     }
     if ($mi1 > $mi2) {
         return true;
     }
     if ($mi1 < $mi2) {
         return false;
     }
     // Patch level
     $p1 = $v1->getPatch();
     $p2 = $v2->getPatch();
     if ($p1 < 0 && $p2 >= 0) {
         return false;
     }
     if ($p1 >= 0 && $p2 < 0) {
         return true;
     }
     if ($p1 > $p2) {
         return true;
     }
     if ($p1 < $p2) {
         return false;
     }
     // Build number
     $b1 = $v1->getBuild();
     $b2 = $v2->getBuild();
     if ($b1 < 0 && $b2 >= 0) {
         return false;
     }
     if ($b1 >= 0 && $b2 < 0) {
         return true;
     }
     if ($b1 > $b2) {
         return true;
     }
     if ($b1 < $b2) {
         return false;
     }
     // Tag.
     $t1 = $v1->getTag();
     $t2 = $v2->getTag();
     if ($t1 === $t2) {
         return false;
     }
     if ($t1 === '' && $t2 !== '') {
         return true;
         //v1 has no tag, v2 has tag
     }
     if ($t1 !== '' && $t2 === '') {
         return false;
         //v1 has tag, v2 has no tag
     }
     // both have tags, sort them naturally to see which one is greater.
     $array = array($t1, $t2);
     natsort($array);
     // natsort() preserves array keys. $array[0] may not be the first element.
     return reset($array) === $t2;
 }