yield 关键字在 PHP 中主要用于生成器(generator)的实现。生成器是一种可以返回多次值的特殊函数,每次调用 next() 方法时,它会从上次暂停的地方继续执行。这在处理大数据集、无限序列或需要逐步获取结果的场景中非常有用。以下是使用 yield 的合适场景:
function readLargeFile($filename)
{
    $file = fopen($filename, 'r');
    while (($line = fgets($file)) !== false) {
        yield $line;
    }
    fclose($file);
}
foreach (readLargeFile('largefile.txt') as $line) {
    // 处理每一行数据
}
function fibonacci()
{
    $a = 0;
    $b = 1;
    while (true) {
        yield $a;
        $temp = $a;
        $a = $b;
        $b = $temp + $b;
    }
}
foreach (fibonacci() as $number) {
    // 处理每个斐波那契数
    if ($number > 100) {
        break;
    }
}
function getPaginatedData($page, $limit)
{
    $offset = ($page - 1) * $limit;
    // 模拟从数据库或 API 获取数据
    $data = [
        // ... 获取数据
    ];
    for ($i = $offset; $i < $offset + $limit && $i < count($data); $i++) {
        yield $data[$i];
    }
}
foreach (getPaginatedData(1, 10) as $item) {
    // 处理每个数据项
}
总之,在需要逐步获取结果、处理大数据集或创建无限序列的场景中,使用 yield 关键字可以带来很多好处。