在看《modern php》,区区200页的东西,看的我神清气爽
还是来尽量总结一下吧,免得看了又忘掉
yield
官方介绍 http://php.net/manual/zh/language.generators.syntax.php
php5.5以上可用
简单来说,对我自己的主要用处
1 读文件的时候可以不用一次性全读入,只读一行
2 db取行的时候,可以一行行取
虽然速度都是慢了,但是可以避免内存溢出。
理解上,每一个yield相当于一次return
要注意官方的第4个例子
我怎么觉得像闭包?我的个天。
<?php
function &gen_reference() {
$value = 3;
while ($value > 0) {
yield $value;
}
}
/*
* 我们可以在循环中修改$number的值,而生成器是使用的引用值来生成,所以gen_reference()内部的$value值也会跟着变化。
*/
foreach (gen_reference() as &$number) {
echo (--$number).'... ';
}
?>
以上例程会输出:
2... 1... 0...