Trong PHP, yield
được sử dụng để tạo ra một trình tự (sequence) các giá trị mà bạn có thể lấy ra từ hàm mà không cần phải đợi cho tất cả các giá trị đều được tính toán xong trước khi trả về.
yield
được sử dụng trong hàm generator (hàm sinh ra các giá trị). Hàm generator là một hàm đặc biệt có khả năng tạm dừng và tiếp tục việc thực thi vào bất cứ thời điểm nào trong quá trình chạy. Khi một giá trị được sinh ra trong hàm generator bằng cách sử dụng yield
, quá trình thực thi của hàm sẽ tạm dừng lại, và giá trị được trả về cho người dùng. Sau đó, khi người dùng yêu cầu tiếp theo, quá trình thực thi sẽ tiếp tục từ điểm tạm dừng trước đó.
Ví dụ sau đây minh họa cách sử dụng yield
để tạo ra một hàm generator đơn giản:
function generateNumbers($start, $end) {
for ($i = $start; $i <= $end; $i++) {
yield $i;
}
}
// sử dụng hàm generator để lấy ra các số từ 1 đến 10
foreach (generateNumbers(1, 10) as $number) {
echo $number . ' ';
}
Kết quả sẽ là: 1 2 3 4 5 6 7 8 9 10
.
Trong ví dụ này, hàm generateNumbers()
là một hàm generator đơn giản, nó sinh ra một trình tự các số từ $start
đến $end
. Với mỗi số được sinh ra, yield
được sử dụng để tạm dừng quá trình thực thi của hàm, và giá trị được trả về cho người dùng. Khi vòng lặp foreach
yêu cầu tiếp theo, quá trình thực thi của hàm generateNumbers()
tiếp tục từ điểm tạm dừng trước đó.