2

在每个版本的 php 中,都添加了一些新功能,并且停止了一些功能。

例子:

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

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

4

5 回答 5

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";
}
?>
于 2013-01-08T11:36:40.963 回答
2

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

现在许多项目都使用Composer作为依赖管理器,但是对于遗留代码,除了运行它并发誓不出错之外,您无能为力。

于 2013-01-08T11:38:33.017 回答
1

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

于 2013-01-09T21:17:38.367 回答
1

好的做法可能是有后备。就像在这个函数中提到的那样,还有其他选择。

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;
    }
}

代码基于约翰逊的回复

设置与新功能相同的基本功能,以防它们不存在让您开展业务而不必担心不兼容。只需将这些隐藏在您没有任何理由编辑它们的地方,它们也不会打扰您。

于 2013-01-08T11:40:48.207 回答
1

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

使用 phpversion();

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

 } 
 else 
 { 
     //loading patch
      function abc(){
        //
      }
 } 
于 2013-01-08T11:41:35.357 回答