2013-01-08 67 views
2

在每个版本的PHP中,都会添加一些新功能并停止某些功能。PHP代码版本依赖关系

实施例:

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

将需要的PHP 5.4.0以上,如HEX2BIN是PHP 5.4.0引入。
在php.net中手动检查版本依赖关系是每一个用于php代码的内置函数的繁琐手段。是否有任何自动/半自动的方式来确定执行任何给定的PHP代码所需的PHP最低版本(以及最大版本,如果适用)?

+0

http://techblog.wimgodden.be/ 2010/06/24/automated-php-5-3-compatibility-testing-for-your-old-code/ – DaveRandom

回答

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"; 
} 
?> 
2

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

许多项目现在使用Composer作为依赖关系管理器,但对于遗留代码,您不能做太多工作但运行它并针对错误发誓。

+0

我没有找到我想要的,我接受了这个答案,因为它是最合适的答案。 – Cyril

+1

或仅查看自述文件中的“要求”部分;) – KingCrunch

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

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

1

您可以创建一个手动检查,然后使用'patch'。定义缺少的内容。

使用phpversion();

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

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