使用PHP版本运行条件

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了使用PHP版本运行条件脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > 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(需要隐藏匿名函数调用),而不是提议的大量文件.

@H_403_37@解决方法
你可以只是评估代码,它可以动态编译.

$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会让它变得简单吗?他的文件中存在大的重叠区域,因此他不想仅仅制作两个单独的文件,因此他想要一种方法在他的文件中间运行两个独立的代码段.

脚本宝典总结

以上是脚本宝典为你收集整理的使用PHP版本运行条件全部内容,希望文章能够帮你解决使用PHP版本运行条件所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。