10、PHP 原生魅力 - 系统功能 - 比较 PHP 版本
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
请登录后再评论