加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用PHP版本运行条件

发布时间:2020-12-13 21:48:31 所属栏目:PHP教程 来源:网络整理
导读:参见英文答案 Is it possible to switch in PHP based on version?????????????????????????????????????4个 所以我现在的目标是检测用户的PHP版本(不是问题),然后根据它运行if else 所以,如果我写这样的东西: if (PHP = 5.3){// call a function anonymous
参见英文答案 > Is it possible to switch in PHP based on version?????????????????????????????????????4个
所以我现在的目标是检测用户的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语句永远不会被评估为true,因为匿名函数调用看起来像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';

现在这样可以正常工作,因为函数53.php永远不会为5.2用户加载.但是,必须使用单独的文件并不理想.

在阅读了对Ales的问题的评论之后,这样的事情:

if ($version > '5.3'){
// require one file
}
else{
// require another
}

不管用. PHP的编译器将在执行前对编译检查语法错误运行这两个文件并抛出我试图避免的错误.文件方法工作的唯一方法是根据版本号动态选择文件.对于PHP 4和5中的每个x.y版本,这都需要一个单独的文件.不太理想.

在亚历克斯的回答中,它运作正常.我们正在讨论一行eval(需要隐藏匿名函数调用),而不是提议的大量文件.

解决方法

你可以只是评估代码,它可以动态编译.

$res = -1
if (PHP => 5.3){
    eval('$res = [some advanced PHP 5.3 fast code]');
}
else {
    $res = [some basic PHP 4 code still supported by 5.3,just deprecated];
    eval('$res = [some real rudimentary PHP 4 code no longer supported at all in 5.3]');
}
$res = $res + 1;
echo $res;

if (PHP => 5.3){
    eval('$res = [some more advanced PHP 5.3 fast code]');
}
else {
    $res = [some more basic PHP 4 code still supported by 5.3,just deprecated];
    eval('$res = [some more real rudimentary PHP 4 code no longer supported at all in 5.3]');
}

看看以这种方式包含50个不同文件会有多痛苦,但是eval会让它变得简单吗?他的文件中存在大的重叠区域,因此他不想仅仅制作两个单独的文件,因此他想要一种方法在他的文件中间运行两个独立的代码段.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读