vierbergenlars / php-semver
v3.0.4
2023-05-02 06:45 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: ^9.5.21
This package is auto-updated.
Last update: 2023-05-02 06:48:11 UTC
README
从node-semver 1.1.2迁移到PHP
php-semver 2.x 与 semver 1.0.0 兼容,但不与 semver 2.0.0 兼容。如果需要 semver 2.0.0 兼容性,请查看php-semver 3.x。
使用方法
<?php use vierbergenlars\SemVer\version; use vierbergenlars\SemVer\expression; use vierbergenlars\SemVer\SemVerException; // Check if a version is valid $semver = new version('1.2.3'); $semver = new version('a.b.c'); //SemVerException thrown //Get a clean version string $semver = new version('=v1.2.3'); $semver->getVersion(); //'1.2.3' //Check if a version satisfies a range $semver = new version('1.2.3'); $semver->satisfies(new expression('1.x || >=2.5.0 || 5.0.0 - 7.2.3')); //true # OR $range = new expression('1.x || >=2.5.0 || 5.0.0 - 7.2.3'); $range->satisfiedBy(new version('1.2.3')); //true //Compare two versions version::gt('1.2.3', '9.8.7'); //false version::lt('1.2.3', '9.8.7'); //true
版本
版本按照以下顺序包含以下内容
- 一个数字(主版本号)
- 一个点
- 一个数字(次版本号)
- 一个点
- 一个数字(修订号)
- 可选:一个连字符,后跟一个数字(构建号)
- 可选:一组几乎包含任何非空白字符(标签)
去除开头的 "="
或 "v"
字符,并忽略。
比较
使用以下算法对版本进行排序,给定两个版本并要求找到其中较大的一个
- 如果主版本号在数值上不同,则选择主版本号较大的那个。
2.3.4 > 1.3.4
- 如果次版本号在数值上不同,则选择次版本号较大的那个。
2.3.4 > 2.2.4
- 如果修订号在数值上不同,则选择修订号较大的那个。
2.3.4 > 2.3.3
- 如果只有一个有构建号,则选择有构建号的那个。
2.3.4-0 > 2.3.4
- 如果它们都有构建号,并且构建号在数值上不同,则选择构建号较大的那个。
2.3.4-10 > 2.3.4-9
- 如果只有一个有标签,则选择没有标签的那个。
2.3.4 > 2.3.4-beta
- 如果它们都有标签,则选择字典顺序较大的标签。
2.3.4-beta > 2.3.4-alpha
- 此时,它们相等。
范围
支持以下范围样式
>1.2.3
大于特定版本。<1.2.3
小于1.2.3 - 2.3.4
:=>=1.2.3 <=2.3.4
~1.2.3
:=>=1.2.3 <1.3.0
~1.2
:=>=1.2.0 <2.0.0
~1
:=>=1.0.0 <2.0.0
1.2.x
:=>=1.2.0 <1.3.0
1.x
:=>=1.0.0 <2.0.0
可以使用空格(表示“并且”)或 ||
(表示“或者”)将范围连接起来。
函数
$version->valid()
:返回解析后的版本,如果不有效则返回null。$version->inc($type)
:返回通过发布类型(主版本、次版本、修订或构建)增加的版本,如果提供的发布类型无效则返回null。
比较
version::gt($v1, $v2)
:v1 > v2
version::gte($v1, $v2)
:v1 >= v2
version::lt($v1, $v2)
:v1 < v2
version::lte($v1, $v2)
:v1 <= v2
version::eq($v1, $v2)
:v1 == v2
如果它们在逻辑上等效,则为真,即使它们不是完全相同的字符串。您已经知道如何比较字符串。version::neq($v1, $v2)
:v1 != v2
eq 的相反数。version::cmp($v1, $comparator, $v2)
: 传入一个比较字符串,它将调用上面的相应函数。"==="
和"!=="
执行简单的字符串比较,但包括在内以示完整。如果提供了无效的比较字符串,则抛出异常。version::compare($v1, $v2)
: 如果v1 == v2
,则返回 0;如果v1 > v2
,则返回 1;如果v1 < v2
,则返回 -1。如果传递给usort()
,则按升序排序。version::rcompare($v1, $v2)
: compare 的反转。如果传递给usort()
,则按降序排序版本数组。
范围
$expression->validRange()
: 返回有效的范围或null
,如果它无效。$version->satisfies($range)
: 如果版本满足范围,则返回true
。$expression->maxSatisfying($versions)
: 返回满足范围数组中的最高版本,如果没有则返回null
。
感谢
所有贡献者 (https://github.com/vierbergenlars/php-semver/graphs/contributors)
@isaacs 和其他对 node-semver 的贡献者