Chris@2: versionString = $versionString; Chris@2: Chris@2: $this->parseVersion($versionString); Chris@2: } Chris@2: Chris@2: /** Chris@2: * @param $versionString Chris@2: */ Chris@2: private function parseVersion($versionString) { Chris@2: $this->extractBuildMetaData($versionString); Chris@2: $this->extractLabel($versionString); Chris@2: Chris@2: $versionSegments = explode('.', $versionString); Chris@2: $this->major = new VersionNumber($versionSegments[0]); Chris@2: Chris@2: $minorValue = isset($versionSegments[1]) ? $versionSegments[1] : null; Chris@2: $patchValue = isset($versionSegments[2]) ? $versionSegments[2] : null; Chris@2: Chris@2: $this->minor = new VersionNumber($minorValue); Chris@2: $this->patch = new VersionNumber($patchValue); Chris@2: } Chris@2: Chris@2: /** Chris@2: * @param string $versionString Chris@2: */ Chris@2: private function extractBuildMetaData(&$versionString) { Chris@2: if (preg_match('/\+(.*)/', $versionString, $matches) == 1) { Chris@2: $this->buildMetaData = $matches[1]; Chris@2: $versionString = str_replace($matches[0], '', $versionString); Chris@2: } Chris@2: } Chris@2: Chris@2: /** Chris@2: * @param string $versionString Chris@2: */ Chris@2: private function extractLabel(&$versionString) { Chris@2: if (preg_match('/\-(.*)/', $versionString, $matches) == 1) { Chris@2: $this->label = $matches[1]; Chris@2: $versionString = str_replace($matches[0], '', $versionString); Chris@2: } Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return string Chris@2: */ Chris@2: public function getLabel() { Chris@2: return $this->label; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return string Chris@2: */ Chris@2: public function getBuildMetaData() { Chris@2: return $this->buildMetaData; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return string Chris@2: */ Chris@2: public function getVersionString() { Chris@2: return $this->versionString; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return VersionNumber Chris@2: */ Chris@2: public function getMajor() { Chris@2: return $this->major; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return VersionNumber Chris@2: */ Chris@2: public function getMinor() { Chris@2: return $this->minor; Chris@2: } Chris@2: Chris@2: /** Chris@2: * @return VersionNumber Chris@2: */ Chris@2: public function getPatch() { Chris@2: return $this->patch; Chris@2: } Chris@2: }