如何不在php5.6上执行一些php7代码



最近我有必要使用come代码来与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仍在尝试执行PHP7代码,返回了太空船操作员的错误。有人知道为什么php仍然在内部执行代码,如果语句明确表示不执行那个么做,以及如何解决这个问题吗?谢谢

您尝试的方法不起作用,因为解析器仍将尝试解析整个文件,并且无法识别php7的某些语法。为了防止这种情况,你需要做这样的事情:

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

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

最新更新