phlak / semver
语义版本控制辅助库
6.0.0
2024-09-19 16:40 UTC
Requires
- php: ^8.1 || ^8.2 || ^8.3
Requires (Dev)
- phlak/coding-standards: ^2.0
- phpstan/phpstan: ^1.11
- phpunit/phpunit: ^9.0 || ^10.0
- yoast/phpunit-polyfills: ^2.0
README
语义版本控制辅助库 • 由 Chris Kankiewicz (@PHLAK) 创建
要求
- PHP >= 8.1
安装
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 许可证。