在每个版本的php中,都会添加一些新功能,并停止使用某些功能。
示例:
<?php
$hex = hex2bin("6578616d706c65206865782064617461");
var_dump($hex);
?>
将需要php 5.4.0及更高版本,因为在Unix 5.4.0中引入了hex2bin 对于php代码中使用的每个内置函数,在php.net中手动检查版本依赖是很繁琐的。是否有任何自动/半自动方式来识别执行任何给定的PHP代码的PHP安装的最低版本(以及最高版本,如果适用)?
答案 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)