我的一个PHP脚本中有一个函数,它依赖于版本5.3来运行。
我认为如果它是在一个在PHP 5.2或更早版本的服务器上运行时没有被调用的函数,那么它就会被忽略。然而,事实证明,当该脚本及其中的类,甚至只是被包含在内时,PHP就会失败并停止执行。
如果我可以避免它,我不希望不同版本的脚本分支专用于不同的PHP版本。相反,能够拥有“如果PHP版本5.3,然后执行此操作,如果更少,然后执行不同的操作”的代码将是理想的。
我在PHP手册中寻找某种“版本切换”,但没有看到。
我正在描述的开关功能可能吗?
答案 0 :(得分:3)
有很多方法可以解决这个问题。我更喜欢检测版本和执行功能。
有一个名为phpversion()
或常量PHP_VERSION
的函数可以为您提供当前的php版本
像
一样使用它们if(phpversion() == '5.3') {
//specific php functions
}
检查当前版本是更新还是等于让我们说'5.3.2'。只需使用:
if (strnatcmp(phpversion(),'5.3.2') >= 0) {
# equal or newer
}
else {
# not
}
或者,使用version_compare来了解
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "\n";
}
或者更加用户友好的版本是使用function_exists()
if (!function_exists('function_name')) {
// the PHP version is not sufficient
}
答案 1 :(得分:1)
使用PHP 5.3+代码创建单独的代码文件,如果检测到5.3或更高版本,则只有include()
。
答案 2 :(得分:0)
查看PHP predefined constants。它们包括几个定义运行版本的常量。您可以使用它来决定要加载哪个版本的脚本。
答案 3 :(得分:0)
如果它们不存在,您可能会考虑实现PHP 5.3+函数。
if (!function_exists('array_replace')) {
function array_replace(....) {
// logic here
}
}
如果您必须检测版本,可以使用PHP_VERSION
。