Example #1
0
 /**
  * Parse a string into Versionable properties
  *
  * @throws InvalidArgumentException
  *
  * @param  string             $string
  * @return Version
  **/
 public static function fromString($string)
 {
     // Sanity check
     if (substr_count($string, '.') !== 2) {
         throw new InvalidArgumentException('Version "' . $string . '" can not be parsed into a valid SemVer major.minor.patch version');
     }
     $parts = explode('.', $string);
     $versionable = new self();
     // Extra check
     if (!is_numeric($parts[0]) || (int) $parts[0] < 0 || !is_numeric($parts[1]) || (int) $parts[1] < 0 || !is_numeric($parts[2]) || (int) $parts[2] < 0) {
         throw new InvalidArgumentException('Version "' . $string . '" can not be parsed into a valid SemVer major.minor.patch version');
     }
     // Versionable parts
     $versionable->setMajor((int) $parts[0])->setMinor((int) $parts[1])->setPatch((int) $parts[2])->setOriginalVersionString($string);
     return $versionable;
 }