繁体   English   中英

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

[英]Is it possible to switch in PHP based on version?

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

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

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

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

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

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

  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
}

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM