kherge / semver
管理语义版本号并进行比较。
Requires
- php: >=7.0
This package is auto-updated.
Last update: 2024-08-29 04:53:24 UTC
README
版本
一个用于解析和比较语义版本号的库。
用法
请注意,以下示例中不使用完全限定名称。所有关于接口、类和函数的引用都可以在命名空间 KHerGe\Version
中找到。另外,请注意以下示例不展示库的所有功能。请参考源代码文件获取更多信息。
简单
解析
对于非常简单的用例,您只需要使用 parse()
函数。
use function KHerGe\Version\parse;
使用此函数,您可以创建一个表示单个语义版本号的价值对象。值对象是不可变的,但提供了便利的方法,以便您可以更改值并接收新的值对象。
// Create a new value object. $version = parse('1.2.3-alpha.1+20161004'); // Bump the patch number: 1.0.1 $patched = $version->incrementPatch(); // The original value object is unchanged. echo $version; // 1.2.3-alpha.1+20161004 // But the patched version number has the change. echo $patched; // 1.2.4
比较
也可以直接在值对象上执行简单的比较。
if ($patched->isGreaterThan($version)) { // $patched is greater than $version }
验证
虽然 parse()
函数会对无效的语义版本数字符串表示抛出 InvalidStringRepresentationException
异常,但您仍然可以使用 is_valid()
函数自行检查。
use function KHerGe\Version\is_valid; $version = '1.2.3-alpha.1+20161004'; if (is_valid($version)) { // $version is valid }
复杂
实现
库将在任何 VersionInterface
实现上工作,但提供了一个包含许多额外便利方法的 Version
实现。
$version = new Version( // major 1, // minor 2, // patch 3, // pre-release ['a', 'b', 'c'], // build ['x', 'y', 'z'] );
解析
如果您需要使用自己的 VersionInterface
实现,库提供了一个解析字符串表示的组件的函数,这样您就无需自己解析。
use function KHerGe\Version\parse_components; $components = parse_components('1.2.3-alpha.1+20161004');
parse_components()
的结果可以用来创建一个新的实例,该实例实现了 VersionInterface
。此函数执行自己的验证,因此使用 is_valid()
检查将是多余的。
$components = [ 'major' => 1, 'minor' => 2, 'patch' => 3, 'pre-release' => ['alpha', '1'], 'build' => ['20161004'] ];
比较
库包含了一组预制的约束,所有这些约束都实现了 ConstraintInterface
。这些约束可以混合使用,以执行比单独使用约束更为复杂的比较操作。
use KHerGe\Version\Compare\Constraint\AndX; use KHerGe\Version\Compare\Constraint\EqualTo; use KHerGe\Version\Compare\Constraint\GreaterThan; use KHerGe\Version\Compare\Constraint\LessThan; use KHerGe\Version\Compare\Constraint\OrX; use function KHerGe\Version\parse; // Match any of the following constraints. $constraint = new OrX( [ // Match all of the following constraints. new AndX( [ // Must be greater than "0.2.3". new GreaterThan(parse('0.2.3')), // Must be less than "0.4.4". new LessThan(parse('0.4.4')), ] ), // Match exactly "0.4.5". new EqualTo(parse('0.4.5')) ] ); // Verify that the version meets the constraints. $version = parse('0.4.0'); if ($constraint->allows($version)) { // $version is allowed }
需求
- PHP 7.0 或更高版本
安装
要安装,您需要使用 Composer。
composer require kherge/semver
许可证
在 MIT 和 Apache 2.0 许可证下发布。
见 LICENSE。