PHP代码版本依赖

时间:2013-01-08 10:52:05

标签: php dependencies version

在每个版本的php中,都会添加一些新功能,并停止使用某些功能。

示例:

<?php
$hex = hex2bin("6578616d706c65206865782064617461");
var_dump($hex);
?>

将需要php 5.4.0及更高版本,因为在Unix 5.4.0中引入了hex2bin 对于php代码中使用的每个内置函数,在php.net中手动检查版本依赖是很繁琐的。是否有任何自动/半自动方式来识别执行任何给定的PHP代码的PHP安装的最低版本(以及最高版本,如果适用)?

5 个答案:

答案 0 :(得分:2)

不知道是否有办法检查php需要哪个版本,但您可以使用“function_exists”来查看您的php版本是否具有该功能。

http://php.net/manual/en/function.function-exists.php

<?php
if (function_exists('hex2bin')) {
    echo "hex2bin function is available.<br />\n";
} else {
    echo "hex2bin function is not available.<br />\n";
}
?>

答案 1 :(得分:2)

由程序员来说明他或她的库/项目的依赖关系。

现在很多项目都使用Composer作为依赖关系管理器,但是对于遗留代码,除了运行它并对错误发誓之外,你做不了多少。

答案 2 :(得分:1)

良好的做法可能是有后备。正如this function中提到的,还有其他选择。

if ( ! function_exists('hex2bin')) {
    function hex2bin($hexstr)
    {
        $n = strlen($hexstr);
        $sbin="";  
        $i=0;
        while($i<$n)
        {      
            $a =substr($hexstr,$i,2);          
            $c = pack("H*",$a);
            if ($i==0){$sbin=$c;}
            else {$sbin.=$c;}
            $i+=2;
        }
        return $sbin;
    }
}

代码基于Johnson's reply

设置基本功能,与新功能相同,以防它们不存在,让您无需担心不合适就可以开展业务。只需隐藏这些没有任何理由进行编辑的地方,他们也不会打扰你。

答案 3 :(得分:1)

您可以创建手动检查,然后使用“补丁”。定义缺少的内容。

使用phpversion();

 if (strnatcmp(phpversion(),'5.2.10') >= 0) 
 { 
       //loading patch

 } 
 else 
 { 
     //loading patch
      function abc(){
        //
      }
 } 

答案 4 :(得分:1)

查看PHPCompatibility项目:https://github.com/wimg/PHPCompatibility 这将测试您的代码是否与5.2,5.3,5.4和5.5兼容(在撰写本文时为alpha2)