composer/semver

提供实用工具、版本约束解析和验证的 Semver 库。

安装数: 328,581,538

依赖者: 535

建议者: 7

安全: 0

星标: 3,140

关注者: 16

分支: 76

开放问题: 3

3.4.3 2024-09-19 14:15 UTC

README

Semver (语义版本) 库,提供实用工具、版本约束解析和验证。

最初作为 composer/composer 的一部分编写,现在已提取出来作为一个独立的库提供。

Continuous Integration PHP Lint PHPStan

安装

使用以下命令安装最新版本

composer require composer/semver

需求

  • 需要 PHP 5.3.2,但强烈推荐使用 PHP 的最新版本。

版本比较

有关版本比较的详细信息,请参阅 版本 文章,位于 getcomposer.org 网站的文档部分。

基本用法

比较器

Composer\Semver\Comparator 类提供以下方法来比较版本

  • greaterThan($v1, $v2)
  • greaterThanOrEqualTo($v1, $v2)
  • lessThan($v1, $v2)
  • lessThanOrEqualTo($v1, $v2)
  • equalTo($v1, $v2)
  • notEqualTo($v1, $v2)

每个函数都接受两个版本字符串作为参数,并返回一个布尔值。例如

use Composer\Semver\Comparator;

Comparator::greaterThan('1.25.0', '1.24.0'); // 1.25.0 > 1.24.0

Semver

Composer\Semver\Semver 类提供以下方法

  • satisfies($version, $constraints)
  • satisfiedBy(array $versions, $constraint)
  • sort($versions)
  • rsort($versions)

区间

Composer\Semver\Intervals 静态类提供了一些用于处理复杂约束或从约束中读取版本区间的实用工具

use Composer\Semver\Intervals;

// Checks whether $candidate is a subset of $constraint
Intervals::isSubsetOf(ConstraintInterface $candidate, ConstraintInterface $constraint);

// Checks whether $a and $b have any intersection, equivalent to $a->matches($b)
Intervals::haveIntersections(ConstraintInterface $a, ConstraintInterface $b);

// Optimizes a complex multi constraint by merging all intervals down to the smallest
// possible multi constraint. The drawbacks are this is not very fast, and the resulting
// multi constraint will have no human readable prettyConstraint configured on it
Intervals::compactConstraint(ConstraintInterface $constraint);

// Creates an array of numeric intervals and branch constraints representing a given constraint
Intervals::get(ConstraintInterface $constraint);

// Clears the memoization cache when you are done processing constraints
Intervals::clear()

请参阅类的文档块以获取更多详细信息。

许可证

composer/semver 在 MIT 许可证下授权,有关详细信息请参阅 LICENSE 文件。