在Python(及其他语言)中,可以通过在函数中使用“yield”操作符逐步处理大量数据。那么在PHP中有没有类似的方法呢?
例如,在Python中,如果我想要读取一个潜在非常大的文件,我可以像下面这样逐行处理它(此示例是人为构造的,因为它基本上与“for line in file_obj”相同):
def file_lines(fname):
f = open(fname)
for line in f:
yield line
f.close()
for line in file_lines('somefile'):
#process the line
目前我的做法(在PHP中)是使用私有实例变量来跟踪状态,并根据每次调用函数进行操作,但似乎必须有更好的方法。
yield
关键字)了!请参见:https://wiki.php.net/rfc/generators - gpmcadam