10、PHP 原生魅力 - 系统功能 - 比较 PHP 版本

作者: 温新

图书: 【原生 PHP 魅力】

阅读: 227

时间: 2024-10-17 10:41:58

PHP 的版本控制系统遵循一个名为 SemVer(语义化版本控制)的规则。版本标识符是一个包含三个数字的字符串。每次发布 PHP 的新版本时,版本标识符都会增加。版本标识符的形式通常是MAJOR.MINOR.PATCH。一旦创建了新版本,版本号将按照以下规则递增:

  • 当有不兼容的 API 变更时,增加主版本号(MAJOR);
  • 当新增功能但不影响现有 API 兼容性时,增加次版本号(MINOR);
  • 当进行 BUG 修复或小改进但不引入新功能且不影响API兼容性时,增加修订号(PATCH)。

例如,PHP 的 8.0.10 版本中,8 为主版本号(MAJOR),0 为次版本号(MINOR),10 为修订号(PATCH)。

有时比较两个版本很有用。

例如,如果你想检测当前版本是否大于或等于 “8.0.0”,你可以使用version_compare()函数。通过phpversion()函数,你可以获取当前的 PHP 版本,然后使用version_compare()函数将其与特定的 PHP 版本进行比较(比如与“8.0.0”比较)。

version_compare()函数有3个参数。前两个参数(必填)是要比较的版本号。第三个参数(可选)是比较时使用的操作符。操作符可以是 <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne

不使用运算符进行比较

调用version_compare()函数并传入 2 个参数时,它会返回一个数字,意义如下:

  • 如果第二个参数比第一个参数大(即更新),则返回 1;
  • 如果两个参数相等,则返回 0;
  • 如果第二个参数比第一个参数小(即更旧),则返回 -1。
<?php

$version = phpversion();

echo '当前 PHP 版本为:' . $version . PHP_EOL;

$minVersion = "8.0.0";

$message = match (version_compare($version, $minVersion)) {
    1  => "NEWER!  当前 PHP 版本 {$version}. 最低版本为 {$minVersion}",
    -1 => "OLDER!  当前 PHP 版本 {$version}. 最低版本为 {$minVersion}",
    0  => "EQUALS! 当前 PHP 版本 {$version}. 最低版本为 {$minVersion}",
};

echo $message . PHP_EOL;

输出如下:

$ php 10-version.php"
当前 PHP 版本为:8.3.7
NEWER!  当前 PHP 版本 8.3.7. 最低版本为 8.0.0

使用运算符进行比较

当使用 3 个参数(版本、版本、操作符)调用version_compare()时,它会返回一个布尔值。第三个参数是用于比较的操作符。允许的操作符包括以下字符串:

  • <lt:小于;
  • <=le:小于或等于;
  • >gt:大于;
  • >=ge:大于或等于;
  • ===eq:等于;
  • !=<>ne:不等于。

这样,你可以直接得到一个布尔结果,来判断两个版本之间是否满足指定的关系。

<?php

$version = phpversion();

echo '当前 PHP 版本为:' . $version . PHP_EOL;

$minVersion = "8.0.0";

if (version_compare($version, $minVersion, 'ge')) {
    echo 'OK,当前 PHP 版本:' . $version . ', 最小版本是:' . $minVersion . PHP_EOL;
} else {
    echo 'OPS,当前 PHP 版本:' . $version . ', 最小版本是:' . $minVersion . PHP_EOL;
}

输出如下:

$ php 10-version.php
当前 PHP 版本为:8.3.7
OK,当前 PHP 版本:8.3.7, 最小版本是:8.0.0
请登录后再评论