1

我的一个 PHP 脚本中有一个函数,它依赖于 5.3 版来运行。

我认为,如果它位于一个在使用 PHP 5.2 或更早版本的服务器上运行时没有被调用的函数中,那么它将被忽略。然而,事实证明,当该脚本和其中的类甚至只是被包含在内时,PHP 就会放弃并停止执行。

如果我可以避免它,我不想将我的脚本的不同版本分支专门用于不同的 PHP 版本。相反,最好能够有这样的代码:“如果 PHP 版本 5.3,则执行此操作,如果更少,则执行不同的操作。”

我在 PHP 手册中寻找了某种“版本切换”,但没有看到。

像我描述的那样的开关功能可能吗?

4

4 回答 4

3

有很多方法可以解决这个问题。我更喜欢检测版本和执行功能。

  1. 有一个名为phpversion()或常量的函数PHP_VERSION可以为您提供当前的 php 版本

    像这样使用它们

    if(phpversion() == '5.3') {
      //specific php functions
    }
    
  2. 要检查当前版本是否更新或等于“5.3.2”。只需使用:

    if (strnatcmp(phpversion(),'5.3.2') >= 0) {
        # equal or newer
    }
    else {
       # not 
    }
    
  3. 或者,使用version_compare来了解

    if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
        echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "\n";
    }
    

或者使用更加用户友好的版本function_exists()

if (!function_exists('function_name')) {
    // the PHP version is not sufficient
}
于 2012-04-28T04:36:57.293 回答
1

为您的 PHP 5.3+ 代码提供一个单独的代码文件,并且仅include()在您检测到 5.3 或更高版本时使用。

于 2012-04-28T04:32:23.843 回答
0

查看PHP 预定义常量。它们包括几个定义运行版本的常量。您可以使用它来决定要加载哪个版本的脚本。

于 2012-04-28T04:33:06.587 回答
0

如果 PHP 5.3+ 函数不存在,您可能会考虑实现它们。

if (!function_exists('array_replace')) {
    function array_replace(....) {
        // logic here
    }
}

如果必须检测版本,可以使用PHP_VERSION.

于 2012-04-28T04:40:20.997 回答