生成器(Generator),从PHP5.5版本标准库就支持了,但不少phper都对其知之甚少。下面将介绍生成器的具体使用。
一、简述和定义
- 生成器函数:指使用了yield关键字的函数
- 生成器对象:调用了生成器函数返回的对象(Generator Object),生成器对象实现了Iterator接口
生成器函数不是yield一次性返回,而是在每次需要值时调用该对象的迭代方法,并在生成器产生值时保存生成器的状态,以便在需要下一个值时恢复执行。
下面的函数就是一个生成器函数,返回值是一个生成器对象
1 |
|
二、代码示例
下面演示通过生成器读取文件,实现惰性读取,而不是一次性读取文件内容。
2.1 yield 生成器读取文件
1 | /** |
2.2 yield from 嵌套生成器
yield from可以进行嵌套生成器的调用,改进上面代码
1 | /** |
三、参考链接
- 本文作者: 暮秋人
- 本文链接: https://muqiuren.pages.dev/2023/02/php-generator/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!