您能分享一下您使用 PHP 生成器时的真实案例吗? 我尝试了解它,但找不到使用生成器的真实用例 非常感谢!
function getLines($file) {
$f = fopen($file, 'r');
try {
while ($line = fgets($f)) {
yield $line;
}
} finally {
fclose($f);
}
}
foreach (getLines("file.txt") as $n => $line) {
if ($n > 5) break;
echo $line;
}
如果对普通数组这样做,会导致性能和内存错误,但由于是用 Generator 完成的,所以不会有问题。
function infinite_numbers(): Generator
{
for ($i = 0; $i < PHP_INT_MAX; $i++) {
$message = yield $i;
if ($message === 'stop') {
break;
}
}
}
$infinite = infinite_numbers();
foreach ($infinite as $value) {
if ($value === 10) {
$infinite->send('stop');
}
echo $value . PHP_EOL;
}