2012-04-28 61 views
1

我有一个依赖版本5.3运行的PHP脚本中的函数。是否可以在基于版本的PHP中进行切换?

我认为,如果它是在PHP 5.2或更低版本的服务器上运行时发生的函数中发生的,那么它将被忽略。但是,事实证明,当该脚本及其内部的类甚至被包含时,PHP将保留并停止执行。

如果我能避免它,我想不必为不同版本的我的脚本分支专用于不同的PHP版本。相反,如果能够有代码说“如果PHP版本5.3,那么做这个,如果更少,然后做一些不同的事情”是理想的。

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

是否像我描述的开关功能可能?

回答

3

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

  1. 有一个名为给你当前的PHP版本phpversion()或恒定PHP_VERSION功能

    使用他们喜欢

    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 
} 
+0

['version_compare'](http://us.php.net/manual/en/function.version-compare.php)怎么样? – DCoder 2012-04-28 04:44:53

+0

@DCoder,忘记了..更新;) – Starx 2012-04-28 04:48:58

+1

在PHP 5.2.7+中还有'PHP_VERSION_ID',比简单比较'PHP_VERSION'更容易使用。例如。 'if(PHP_VERSION_ID> = 50300)'。参考:http://php.net/phpversion#example-536 – MrWhite 2015-04-02 12:11:17

1

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

+0

感谢您的回复,但我在问题中特别说了我宁愿不支持我的脚本的不同版本。我已经意识到我可以创建一个单独的代码文件,但是如果我能得到它,我正在寻找一个代码内解决方案。 – Questioner 2012-04-28 04:49:03

0

你可以看看如何实现PHP 5.3+函数,如果它们不存在。

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

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

相关问题