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