Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/composer/semver
Semantic versioning utilities with the addition of version constraints parsing and checking.
https://github.com/composer/semver
Last synced: 5 days ago
JSON representation
Semantic versioning utilities with the addition of version constraints parsing and checking.
- Host: GitHub
- URL: https://github.com/composer/semver
- Owner: composer
- License: mit
- Created: 2015-07-15T17:05:25.000Z (over 9 years ago)
- Default Branch: main
- Last Pushed: 2024-09-19T14:15:31.000Z (4 months ago)
- Last Synced: 2024-12-30T16:45:44.685Z (12 days ago)
- Language: PHP
- Size: 607 KB
- Stars: 3,178
- Watchers: 16
- Forks: 75
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome - composer/semver - Semantic versioning utilities with the addition of version constraints parsing and checking. (PHP)
- php-awesome - composer/semver - 语义化版本 (类库 / 未归类)
README
composer/semver
===============Semver (Semantic Versioning) library that offers utilities, version constraint parsing and validation.
Originally written as part of [composer/composer](https://github.com/composer/composer),
now extracted and made available as a stand-alone library.[![Continuous Integration](https://github.com/composer/semver/actions/workflows/continuous-integration.yml/badge.svg?branch=main)](https://github.com/composer/semver/actions/workflows/continuous-integration.yml)
[![PHP Lint](https://github.com/composer/semver/actions/workflows/lint.yml/badge.svg?branch=main)](https://github.com/composer/semver/actions/workflows/lint.yml)
[![PHPStan](https://github.com/composer/semver/actions/workflows/phpstan.yml/badge.svg?branch=main)](https://github.com/composer/semver/actions/workflows/phpstan.yml)Installation
------------Install the latest version with:
```bash
composer require composer/semver
```Requirements
------------* PHP 5.3.2 is required but using the latest version of PHP is highly recommended.
Version Comparison
------------------For details on how versions are compared, refer to the [Versions](https://getcomposer.org/doc/articles/versions.md)
article in the documentation section of the [getcomposer.org](https://getcomposer.org) website.Basic usage
-----------### Comparator
The [`Composer\Semver\Comparator`](https://github.com/composer/semver/blob/main/src/Comparator.php) class provides the following methods for comparing versions:
* greaterThan($v1, $v2)
* greaterThanOrEqualTo($v1, $v2)
* lessThan($v1, $v2)
* lessThanOrEqualTo($v1, $v2)
* equalTo($v1, $v2)
* notEqualTo($v1, $v2)Each function takes two version strings as arguments and returns a boolean. For example:
```php
use Composer\Semver\Comparator;Comparator::greaterThan('1.25.0', '1.24.0'); // 1.25.0 > 1.24.0
```### Semver
The [`Composer\Semver\Semver`](https://github.com/composer/semver/blob/main/src/Semver.php) class provides the following methods:
* satisfies($version, $constraints)
* satisfiedBy(array $versions, $constraint)
* sort($versions)
* rsort($versions)### Intervals
The [`Composer\Semver\Intervals`](https://github.com/composer/semver/blob/main/src/Intervals.php) static class provides
a few utilities to work with complex constraints or read version intervals from a constraint:```php
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()
```See the class docblocks for more details.
License
-------composer/semver is licensed under the MIT License, see the LICENSE file for details.