我们从MongoDB驱动程序中使用某些函数来迭代游标,我们可以使用“hasNext()”和“getNext()”。但是我们也可以使用简单的PHP foreach来迭代游标,我们不必调用上述方法。PHP的MongoDB游标如何工作?
我的问题是,如果foreach是简单的PHP函数,它如何与MongoDB一起工作?它如何从光标获取记录?它内部使用MongoDB的“cursor.forEach()”,还是内部运行“hasNext()”和“getNext()”?
任何帮助将不胜感激。
我们从MongoDB驱动程序中使用某些函数来迭代游标,我们可以使用“hasNext()”和“getNext()”。但是我们也可以使用简单的PHP foreach来迭代游标,我们不必调用上述方法。PHP的MongoDB游标如何工作?
我的问题是,如果foreach是简单的PHP函数,它如何与MongoDB一起工作?它如何从光标获取记录?它内部使用MongoDB的“cursor.forEach()”,还是内部运行“hasNext()”和“getNext()”?
任何帮助将不胜感激。
MongoCursor类实现Iterator
接口。因此,与光标相同的是,调用$cursor->next()
,然后检查$cursor->valid()
,然后从$cursor->current()
获得值(重复,直到valid
为false
)。对于$key => $value
格式,它也获得值$cursor->key()
。
它执行一些内部运行,但没有运行“hasNext()”,“getNext()”等。它运行在Iterator
接口中抽象描述的标准方法。
对不起,我的唠叨,但foreach
不是“简单的PHP函数”;这是一种语言结构。我刚刚在Stack Overflow上找到了关于the difference的一个很好的解释。