В класс VersionInfo добавлены статические методы MinVersion и MaxVersion.

Метод CompareWithRange обновлён с учётом новых методов
This commit is contained in:
Александр Бабаев 2025-06-26 21:39:26 +03:00
parent 1290a567de
commit e9118609b6
2 changed files with 76 additions and 11 deletions

View File

@ -2,7 +2,7 @@
## Информация о версии
Версия класса: 1.1
Версия класса: 1.2
Впервые введено в пакет с версии: 1.0.24
Последнее обновление в версии: 1.0.27
@ -370,4 +370,50 @@
В результате на экране появится:
false|true|false
false|true|false
#### Метод `MinVersion`
Введено в версии `1.0.28`.
Этот **статический** метод **без параметров** возвращает минимальную версию (объект класса `VersionInfo`).
Синтаксис:
public static function MinVersion (): VersionInfo
Пример,
// Создаю объекты
$version = VersionInfo::MinVersion();
// Вывожу
echo $version;
В результате на экране появится:
0.0.0.0 PreAlpha 0
#### Метод `MaxVersion`
Введено в версии `1.0.28`.
Этот **статический** метод **без параметров** возвращает максимальную версию (объект класса `VersionInfo`).
Синтаксис:
public static function MaxVersion (): VersionInfo
Пример,
// Создаю объекты
$version = VersionInfo::MaxVersion();
// В этом примере считается, что константа PHP_INT_MAX равна 9223372036854775807
// Вывожу
echo $version;
В результате на экране появится:
9223372036854775807.9223372036854775807.9223372036854775807.9223372036854775807

View File

@ -11,7 +11,7 @@ use goodboyalex\php_components_pack\extensions\StringExtension;
*
* @author Александр Бабаев
* @package php_components_pack
* @version 1.1
* @version 1.2
* @since 1.0.24
*/
final class VersionInfo
@ -306,6 +306,7 @@ final class VersionInfo
* @return int Возвращает 1, если текущая версия старше интервала, 0, если находится в интервале, -1, если текущая
* версия младше интервала.
*
* @version 1.1
* @since 1.0.27
*/
public function CompareWithRange (?VersionInfo $left = null, ?VersionInfo $right = null,
@ -317,17 +318,11 @@ final class VersionInfo
VersionCompareRangeOption::RightBorderIncluded
]);
// Минимальная версия (случай, когда левая граница не указана)
$minVersion = new VersionInfo(0, 0, 0, 0, VersionInfoStage::PreAlpha, 0);
// Максимальная версия (случай, когда правая граница не указана)
$maxVersion = new VersionInfo(PHP_INT_MAX, PHP_INT_MAX, PHP_INT_MAX, PHP_INT_MAX, VersionInfoStage::Stable);
// Устанавливаем левую границу
$leftBorder = $left ?? $minVersion;
$leftBorder = $left ?? self::MinVersion();
// Устанавливаем правую границу
$rightBorder = $right ?? $maxVersion;
$rightBorder = $right ?? self::MaxVersion();
// Проверяем, что границы не перепутаны
if ($leftBorder->CompareWith($rightBorder) == 0)
@ -369,4 +364,28 @@ final class VersionInfo
// -- в противном случае, версия старше правой границы (или равна ей при не включении границы)
return 1;
}
/**
* Возвращает минимальную версию.
*
* @return VersionInfo Минимальная версия.
*
* @since 1.0.28
*/
public static function MinVersion (): VersionInfo
{
return new VersionInfo(0, 0, 0, 0, VersionInfoStage::PreAlpha, 0);
}
/**
* Возвращает максимальную версию.
*
* @return VersionInfo Максимальная версия.
*
* @since 1.0.28
*/
public static function MaxVersion (): VersionInfo
{
return new VersionInfo(PHP_INT_MAX, PHP_INT_MAX, PHP_INT_MAX, PHP_INT_MAX, VersionInfoStage::Stable);
}
}