Эта библиотека определяет класс SteveGrunwellSemVerVersion , который предназначен для анализа и манипулирования номерами версий на основе правил семантического управления версиями (он же «Semver»).
Установите библиотеку с помощью композитора:
$ composer require stevegrunwell/semver-parserОбратите внимание, что, хотя эта библиотека должна быть совместима с PHP 7.4 и новее, модульные тесты проводятся только в CI против активно поддерживаемых версиями PHP.
Конструктор класса Version может принять действительную семантическую версию на основе спецификации Semantic Versioning 2.0.0:
use SteveGrunwell SemVer Parser ;
// Import the Composer-generated autoloader.
require_once __DIR__ . ' /vendor/autoload.php ' ;
$ version = new Version ( ' 1.2.3-rc1+local ' );
// Parse the version.
$ version -> getMajorVersion (); // 1
$ version -> getMinorVersion (); // 2
$ version -> getPatchVersion (); // 3
$ version -> getPreReleaseVersion (); // rc1
$ version -> getBuildMetadata (): // local
// Modify the version.
$ version -> setMajorVersion ( 4 );
$ version -> setMinorVersion ( 5 );
$ version -> setPatchVersion ( 6 );
$ version -> setPreReleaseVersion ( ' rc2 ' );
$ version -> setBuildMetadata ( ' github-actions.ubuntu2404 ' );
// Retrieve the updated version as a string.
$ version -> getVersion (); // "4.5.6-rc2+github-actions.ubuntu2404"
( string ) $ version ; // "4.5.6-rc2+github-actions.ubuntu2404"В дополнение к сеттерам и геттерам, описанным выше, каждое из основных значений, незначительных и патч имеет соответствующие методы приращения и уменьшения:
// Increment values.
$ version -> incrementMajorVersion ();
$ version -> incrementMinorVersion ();
$ version -> incrementPatchVersion ();
// Decrement values.
$ version -> decrementMajorVersion ();
$ version -> decrementMinorVersion ();
$ version -> decrementPatchVersion (); Стоит отметить, что incrementMajorVersion() и incrementMinorVersion() сбросит номера несовершеннолетних/патч и патч (соответственно) в соответствии со спецификацией семантической версии 2.0.0.
Эта библиотека выпущена по лицензии MIT. Пожалуйста, смотрите License.md для получения более подробной информации.