主页
关于
Stay before every beautiful thoughts
在每一个美好的思想前停留
文章
>
学习笔记
>
正文
yield 生成器理解与使用
PHP
生成器
迭代器
yield
Created at 2021-07-16 23:23
#### 简单理解 > 生成器yield关键字不是返回值,他的专业术语叫产出值,只是生成一个值 #### 使用场景 如果你读取一个大文件,然后使用 memory_get_peak_usage(),你会注意到生成器的代码会使用固定的内存,无论这个文件有多大。它每次进度去一行。 而用 file_get_contents() 函数读取整个文件,会使用更大的内存。 这就是在迭代处理这类事物时,生成器的能给我们带来的优势! ```php <?php function yieldReadLine($filePath){ $handle = fopen($filePath, 'r'); while(!feof($handle)){ yield trim(fgets($handle)); } fclose($handle); } foreach(yieldReadLine(__FILE__) as $i => $line){ print $i . "." . $line ."\n"; } ``` #### 参考文章 [PHP: 生成器语法 - Manual](https://www.php.net/manual/zh/language.generators.syntax.php "PHP: 生成器语法 - Manual") [PHP中被忽略的性能优化利器:生成器](https://segmentfault.com/a/1190000012334856 "PHP中被忽略的性能优化利器:生成器")