packageName = $packageName; $splittedVersion = explode('@', $version); $this->shortVersion = $splittedVersion[0]; $this->commitHash = $splittedVersion[1]; $this->versionIsTagged = preg_match('/[^v\d\.]/', $this->getShortVersion()) === 0; } public function getPrettyVersion(): string { if ($this->versionIsTagged) { return $this->getShortVersion(); } return $this->getVersionWithShortCommit(); } public function getFullVersion(): string { return $this->getShortVersion() . '@' . $this->getCommitHash(); } public function getVersionWithShortCommit(): string { return $this->getShortVersion() . '@' . $this->getShortCommitHash(); } public function getPackageName(): string { return $this->packageName; } public function getShortVersion(): string { return $this->shortVersion; } public function getCommitHash(): string { return $this->commitHash; } public function getShortCommitHash(): string { return substr($this->commitHash, 0, self::SHORT_COMMIT_LENGTH); } public function __toString(): string { return $this->getPrettyVersion(); } }