PHP预定义的接口和SPL - 版本检查是否足够?
问题描述:
这可能是一个明显的问题,但我想确定。PHP预定义的接口和SPL - 版本检查是否足够?
我试图弄清楚在哪个版本中出现“Predefined Interfaces”。我的假设是5.0.0,因为这是根据文档添加SPL接口的时候。
此外,可以通过配置或重新编译禁用这些功能,还是可以安全地假定版本检查是否满足其存在?为什么他们甚至与SPL分开,是区别对手,只是这些不能关闭,而SPL可以呢? (至少在5.3.0之前)
答
我没有比你添加接口的时候的假设更好的答案,或者差异是什么(在PHP CVS中挖掘5分钟没有产生一个) 。
但是,有一个防弹的方法来检查它们的存在,而不是依靠版本检查:interface_exists
。对于PHP版本5.0.0和5.0.1,您需要改为class_exists
。
所以:
function interfaces_defined() {
// Most likely case first
if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
return true;
}
else if (version_compare(PHP_VERSION, '5.0.0', '<')) {
return false;
}
else if (version_compare(PHP_VERSION, '5.0.1', '<=')) {
return class_exists('Iterator');
}
else {
return interface_exists('Iterator');
}
}
不是最漂亮的,但它肯定涵盖了所有的基地。
+0
我会投你的评论,如果我不只是困扰,使一个帐户,并没有代表这样做!尽管它不像其他一些人那样直接回答,但A +为了透彻:D – pospi 2011-04-05 09:42:51
答
辉煌。我之前正在查看该网站,但没有意识到那里也有版本信息。 喜欢文档的那一部分只是坐在别人的主目录中:p – pospi 2011-04-05 09:40:32