Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP预定义接口&;SPL-版本检查是否足够?_Php_Interface_Spl_Predefined Variables - Fatal编程技术网

PHP预定义接口&;SPL-版本检查是否足够?

PHP预定义接口&;SPL-版本检查是否足够?,php,interface,spl,predefined-variables,Php,Interface,Spl,Predefined Variables,这也许是一个显而易见的问题,但我想确定 我正试图找出PHP中出现“”的版本。我的假设是5.0.0,因为这是根据文档添加SPL接口的时候 此外,是否可以通过配置或重新编译来禁用它们,或者是否可以安全地假设版本检查满足它们的存在?为什么它们甚至与SPL分离,区别在于它们不能关闭,而SPL可以关闭?(至少在5.3.0之前)我没有比您的假设更好的答案,关于接口是何时添加的,或者区别是什么(在PHP CVS中挖掘五分钟并没有产生一个) 但是,有一种防弹的方法来检查它们的存在,而不是依赖于版本检查:。对于P

这也许是一个显而易见的问题,但我想确定

我正试图找出PHP中出现“”的版本。我的假设是5.0.0,因为这是根据文档添加SPL接口的时候


此外,是否可以通过配置或重新编译来禁用它们,或者是否可以安全地假设版本检查满足它们的存在?为什么它们甚至与SPL分离,区别在于它们不能关闭,而SPL可以关闭?(至少在5.3.0之前)

我没有比您的假设更好的答案,关于接口是何时添加的,或者区别是什么(在PHP CVS中挖掘五分钟并没有产生一个)

但是,有一种防弹的方法来检查它们的存在,而不是依赖于版本检查:。对于PHP版本5.0.0和5.0.1,您必须改为执行
class\u exists

因此:

函数接口\u定义(){
//最有可能的情况是先
如果(版本比较(PHP版本,'5.3.0','>=')){
返回true;
}

否则如果(版本)比较(PHP_VERSION,'5.0.0','您可以找到每个SPL接口的可用版本。一些是在5.0之后添加的。根据PHP5.3.0,SPL无法禁用。

目前,手册仅显示属于每个接口的方法的版本信息。此版本信息可在页面abo顶部找到使用方法原型()

因此,请单击方法描述并查看其中列出的内容

这些功能是否可以通过配置或重新编译来禁用,或者可以安全地假设版本检查满足它们的存在?为什么它们甚至与SPL分离,区别在于它们是否永远无法关闭,而SPL可以关闭?(至少在5.3.0之前)

这些接口根本不是SPL扩展的一部分,也没有启用或禁用它们的功能。它们需要在Zend引擎中实现;它们不可能在SPL定义的扩展中实现



值得一提的是,我在不久前打开了一个关于在类(以及接口)上提供版本信息的特性请求()概述/概要页面。感谢您提醒我它的存在,并且会很有用!

太棒了。我之前查看过该网站,但没有意识到其中也有版本信息。我很高兴文档的这一部分只是放在某人的主目录中:如果我不费心做一个评论,pI会投票支持你的评论n帐户,但没有代表这样做!尽管这不是像其他人那样直接的回答,A+表示深思熟虑:D
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');
    }
}