如果PHP版本的条件忽略新代码

时间:2014-06-26 09:35:29

标签: php version php-5.3 php-5.2

所以我有一个需要在多个站点上运行的脚本。我有一个版本的脚本,它使用一些新的PHP 5.3函数进行了优化,但有些站点是5.2等。

此代码:

if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
    Do the optimised 5.3 code (Although 5.2 throws syntax errors for it)
} else {
  do the slower version of code
}

但是,在5.2服务器上,它会检测第一个if条件中的“语法错误”,即使技术上应该跳过该内容,我知道PHP仍会扫描整个文件。

如果完全忽略第一个怎么能得到5.2(我知道我可以用“@”来忽略错误,但这感觉就像是作弊?)

2 个答案:

答案 0 :(得分:4)

您可以根据版本包含不同的脚本,然后在5.2中永远不会包含语法在5.2中无效的脚本。

if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
     include("script53.php");
} else {
     include("script52.php");
}

答案 1 :(得分:2)

除了上面的代码并调用两个不同的函数,我建议创建你需要的PHP 5.3函数,如果它们不存在的话。这样你只需要记住一个函数名而不是两个。

if (!function_exists('example_func')) {
   function example_func($str,$str2) {
      return $str.$str2; 
   }
}

example_func('abc','def');