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
關鍵字可以帶來很多好處。