是否可以根据版本切换PHP?

时间:2012-04-28 04:29:20

标签: php

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

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

如果我可以避免它,我不希望不同版本的脚本分支专用于不同的PHP版本。相反,能够拥有“如果PHP版本5.3,然后执行此操作,如果更少,然后执行不同的操作”的代码将是理想的。

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

我正在描述的开关功能可能吗?

4 个答案:

答案 0 :(得分: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";
    }
    
  4. 或者更加用户友好的版本是使用function_exists()

    if (!function_exists('function_name')) {
        // the PHP version is not sufficient
    }
    

答案 1 :(得分:1)

使用PHP 5.3+代码创建单独的代码文件,如果检测到5.3或更高版本,则只有include()

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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