Sunyanzi
2015-01-17 01:57:56 +08:00
不会经常用到 ... 只是偶尔会用 ... 用法不外乎两种 ...
其一是用来生成一个规律的结构 ... 比如下面这样 ...
function gen() {
for ( $i = 0; $i < 5; ++ $i ) {
yield 1;
yield 2;
yield 3;
}
}
foreach( gen() as $gen ) echo $gen;
五个 123 只是示例 ... 生成的内容也可能是等差数列等比数列斐波那契数列一类的 ...
同理还能用来步进式的读文件 ... 避免直接把整个文件都读到内存里 ...
其二是用来挂起函数执行 ... 比如下面这样 ...
function logger( $file ) {
$f = fopen( $file, 'a' );
for ( ;;; ) {
$line = yield;
fwrite( $f, $line );
}
}
$log = logger( '/tmp/logger.log' );
$log->send("First");
$log->send("Second");
$log->send("Third");
这样可以避免每次都建立句柄或把句柄传递来传递去 ...