Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kherge/php.semver
Manages semantic version numbers and compares them.
https://github.com/kherge/php.semver
semver versioning
Last synced: 3 months ago
JSON representation
Manages semantic version numbers and compares them.
- Host: GitHub
- URL: https://github.com/kherge/php.semver
- Owner: kherge
- License: other
- Created: 2016-10-05T17:22:24.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-02-03T16:08:45.000Z (almost 5 years ago)
- Last Synced: 2024-04-24T13:55:38.047Z (9 months ago)
- Topics: semver, versioning
- Language: PHP
- Size: 43.9 KB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Build Status](https://travis-ci.org/kherge/php.semver.svg?branch=master)](https://travis-ci.org/kherge/php.semver)
[![Packagist](https://img.shields.io/packagist/v/kherge/semver.svg)](https://packagist.org/packages/kherge/semver)
[![Packagist Pre Release](https://img.shields.io/packagist/vpre/kherge/semver.svg)](https://packagist.org/packages/kherge/semver)Version
=======A library for parsing and comparing semantic version numbers.
Usage
-----Please note that full qualified names are not used in the examples below. All
references to interfaces, classes, and functions can be found in the namespace
`KHerGe\Version`. Also note that the examples below do not demonstrate the
complete abilities of the library. Please refer to the source files for more
information.### Simple
#### Parsing
For very simple use cases, you only need the `parse()` function.
```php
use function KHerGe\Version\parse;
```With this function, you can create a value object that represents an individual
semantic version number. The value object is immutable, but convenience methods
are available so that you can alter values and receive new value objects.```php
// 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
```#### Comparing
Simple comparisons can also be performed directly on the value objects.
```php
if ($patched->isGreaterThan($version)) {
// $patched is greater than $version
}
```#### Validating
While, the `parse()` function throws a `InvalidStringRepresentationException`
for invalid string representations of a semantic version number, you can still
check yourself by using the `is_valid()` function.```php
use function KHerGe\Version\is_valid;$version = '1.2.3-alpha.1+20161004';
if (is_valid($version)) {
// $version is valid
}
```### Complex
#### Implementations
The library will work on any implementation of `VersionInterface` but provides
a `Version` implementation that includes a lot of extra methods for convenience.```php
$version = new Version(// major
1,// minor
2,// patch
3,// pre-release
['a', 'b', 'c'],// build
['x', 'y', 'z']);
```#### Parsing
If you need to use your own implementation of `VersionInterface`, the library
provides a function to parse the components of a string representation so that
you won't have to.```php
use function KHerGe\Version\parse_components;$components = parse_components('1.2.3-alpha.1+20161004');
```The result of `parse_components()` can be used to create a new instance that
implements `VersionInterface`. This function performs its own validation, so
checking with `is_valid()` will be redundant.```php
$components = [
'major' => 1,
'minor' => 2,
'patch' => 3,
'pre-release' => ['alpha', '1'],
'build' => ['20161004']
];
```#### Comparing
The library contains a set of pre-made constraints, all of which implement
`ConstraintInterface`. These constraints can be mixed and matched in order to
perform far more complex comparison operations than by using the constraints
on their own.```php
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
}```
Requires
--------- PHP 7.0 or greater
Install
-------To install, you will need to use Composer.
composer require kherge/semver
License
-------Released under both MIT and Apache 2.0.
See [LICENSE](LICENSE).