所以我现在的目标是检测用户的 PHP 版本(不是问题),然后根据它运行 if else
所以如果我写这样的东西:
if (PHP => 5.3){
// call a function anonymously
}
else {
// if user does not have 5.3, this else block disables the feature.
}
我遇到的问题是,如果用户有 5.3 或更高版本(因为它们是在 PHP 5.3 中引入的),我想使用 PHP 的匿名函数,如果他们有旧版本,我想使用替代方法。当然,问题是,如果用户使用 PHP 5.2.17,虽然该 if 语句永远不会评估为真,但会抛出一个致命的语法错误,因为匿名函数调用看起来像 PHP 的语法错误5.2.17
有没有办法做类似上述的事情?我发现的唯一解决方法是将 if 中的内容放在一个新文件中,将 else 中的内容放在另一个文件中,然后执行以下操作:
$version = '5.2';//user's current version cut to the nearest x.y, ex 5.3, 5.4, 5.5
// Remove the period here, so we have 5.2
require 'function'.$version.'.php';
现在这将正常工作,因为永远不会为 5.2 用户加载 function53.php。但是,必须使用单独的文件并不理想。
在阅读了对 Ales 问题的评论后,是这样的:
if ($version > '5.3'){
// require one file
}
else{
// require another
}
不管用。PHP 的编译器将在编译时运行这两个文件,然后在执行前检查语法错误并抛出我试图避免的错误。文件方法起作用的唯一方法是根据版本号动态选择文件。对于 PHP 4 和 5 的每个 xy 版本,这需要一个单独的文件。不理想。
在亚历克斯的回答中,它工作正常。我们说的是一行 eval(需要隐藏匿名函数调用),而不是建议的大量文件。