2013-01-08 63 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(){ 
     // 
     } 
}