phlak/semver

语义版本控制辅助库

维护者

详细信息

github.com/PHLAK/SemVer

源代码

问题

资助包维护!
PHLAK
Paypal

6.0.0 2024-09-19 16:40 UTC

README

SemVer

语义版本控制辅助库 • 由 Chris Kankiewicz (@PHLAK) 创建

Join our Community Become a Sponsor One-time Donation
Latest Stable Version Total Downloads License GitHub branch checks state

要求

安装

composer require phlak/semver

初始化

use PHLAK\SemVer;

$version = new SemVer\Version(); // Initilializes to '0.1.0'

或者通过创建时传递版本字符串来使用自定义版本。接受任何有效的语义版本字符串,无论是否带有前缀 v

$version = new SemVer\Version('v1.2.3-alpha.5+sha.8d31ff4');

或者使用静态构造函数 Version::parse() 解析不完整的版本字符串。

$version = SemVer\Version::parse('v1')   // Initializes to '1.0.0'
$version = SemVer\Version::parse('v1.2') // Initializes to '1.2.0'

用法

检索版本或单独的值

$version = new SemVer\Version('v1.2.3-beta.4+007');

echo $version;             // '1.2.3-beta.4+007'
echo $version->major;      // 1
echo $version->minor;      // 2
echo $version->patch;      // 3
echo $version->preRelease; // 'beta.4'
echo $version->build;      // '007'

增加版本

$version = new SemVer\Version('v1.2.3');

$version->incrementMajor();      // v1.2.3 -> v2.0.0
$version->incrementMinor();      // v1.2.3 -> v1.3.0
$version->incrementPatch();      // v1.2.3 -> v1.2.4
$version->incrementPreRelease(); // v1.2.3-alpha.5 -> v1.2.3-alpha.6

设置(覆盖)版本或单独的值

$version = new SemVer\Version();

$version->setVersion('v1.2.3');  // v1.2.3
$version->setMajor(3);           // v1.2.3 -> v3.0.0
$version->setMinor(5);           // v1.2.3 -> v1.5.0
$version->setPatch(7);           // v1.2.3 -> 1.2.7
$version->setPreRelease('rc.2'); // v1.2.3 -> v1.2.3-rc.2
$version->setBuild('007');       // v1.2.3 -> v1.2.3+007

清除预发布/构建值

$version->setPreRelease(null); // v1.2.3-rc.2 -> v1.2.3
$version->setBuild(null);      // v1.2.3+007 -> v1.2.3

检查预发布/构建值

$version->isPreRelease();
$version->hasBuild();

比较两个 SemVer 对象

$version1 = new SemVer\Version('v1.2.3');
$version2 = new SemVer\Version('v3.2.1');

$version1->gt($version2);  // false
$version1->lt($version2);  // true
$version1->eq($version2);  // false
$version1->neq($version2); // true
$version1->gte($version2); // false
$version1->lte($version2); // true
仅限比较主版本

完全忽略次要版本、补丁版本和预发布版本

$version1 = new SemVer\Version('v1.2.3-alpha.4');
$version2 = new SemVer\Version('v1.3.4-alpha.5');

$version1->gt($version2, Compare::MAJOR);  // false
$version1->lt($version2, Compare::MAJOR);  // false
$version1->eq($version2, Compare::MAJOR);  // true
$version1->neq($version2, Compare::MAJOR); // false
$version1->gte($version2, Compare::MAJOR); // true
$version1->lte($version2, Compare::MAJOR); // true
仅限比较主版本和次要版本

完全忽略补丁版本和预发布版本

$version1 = new SemVer\Version('v1.2.3-alpha.4');
$version2 = new SemVer\Version('v1.2.4-alpha.5');

$version1->gt($version2, Compare::MINOR);  // false
$version1->lt($version2, Compare::MINOR);  // false
$version1->eq($version2, Compare::MINOR);  // true
$version1->neq($version2, Compare::MINOR); // false
$version1->gte($version2, Compare::MINOR); // true
$version1->lte($version2, Compare::MINOR); // true
仅限比较主版本、次要版本和补丁版本

完全忽略预发布版本

$version1 = new SemVer\Version('v1.2.3-alpha.4');
$version2 = new SemVer\Version('v1.2.3-alpha.5');

$version1->gt($version2, Compare::PATCH);  // false
$version1->lt($version2, Compare::PATCH);  // false
$version1->eq($version2, Compare::PATCH);  // true
$version1->neq($version2, Compare::PATCH); // false
$version1->gte($version2, Compare::PATCH); // true
$version1->lte($version2, Compare::PATCH); // true

故障排除

有关一般帮助和支持,请加入我们的 GitHub 讨论组 或在 Twitter 上联系。

请将错误报告给 GitHub 问题跟踪器

版权

本项目遵循 MIT 许可证