1

最近我有必要使用来与 PHP 5.6 向后兼容的代码,我使用 if 语句执行此操作,检查 php 版本以选择执行的代码。这是一个小例子:

if ( version_compare( PHP_VERSION, '7.0', '>=' ) ) {
    return strtotime($b['date']) <=> strtotime($a['date']);
}
else {
    if (strtotime($a['date']) == strtotime($b['date'])) {
        return 0;
    }
    return (strtotime($a['date']) > strtotime($b['date'])) ? -1 : 1;
}

我以为这样就足够了,但事实并非如此。PHP 仍在尝试执行 PHP 7 代码,使用 spaceship 运算符返回错误。任何人都知道为什么 php 仍在内部执行代码以及 if 语句明确表示不这样做以及如何解决这个问题?谢谢

4

1 回答 1

1

您尝试的方式不起作用,因为解析器仍会尝试解析整个文件并且无法识别某些 php7 语法。为了防止这种情况,您需要执行以下操作:

if (version_compare(PHP_VERSION, '7.0', '>=')) {
    include('php7code.php');
}
else {
    include('php5code.php');
}

请注意,这是不可取的,并且会使您的代码更难测试。

于 2020-03-15T17:32:40.000 回答