Selamat datang di part ke-63 dari seri tutorial Tutorial Pemrograman kita! Di part ini, kita akan menyelami konsep PHP Generators. Generators adalah cara yang sangat efisien untuk menghasilkan data iterasi, terutama ketika berhadapan dengan set data besar. Sebelum memulai, pastikan Anda sudah familiar dengan konsep dasar iterator dan loops dalam PHP. Part sebelumnya membahas 'PHP Reflection API - Membongkar Rahasia Class dan Object', pengetahuan mengenai cara kerja internal class dan object akan berguna dalam memahami optimasi yang ditawarkan Generators.
Bayangkan Anda memiliki sebuah toko kue yang sangat populer. Setiap hari, Anda harus membuat ratusan kue. Alih-alih membuat semua kue sekaligus dan menyimpannya (yang memakan banyak ruang dan risiko kue menjadi basi), Anda membuat kue satu per satu sesuai pesanan. Generator dalam PHP bekerja seperti itu. Ia menghasilkan nilai satu per satu hanya saat diperlukan, bukan menghasilkan seluruh set data di awal. Hal ini menghemat memori dan meningkatkan kinerja, terutama ketika bekerja dengan data besar.
Secara teknis, Generator adalah fungsi yang menggunakan kata kunci yield untuk menghasilkan nilai. Ketika sebuah generator dipanggil, ia tidak langsung dieksekusi. Sebaliknya, ia mengembalikan objek iterator yang dapat diiterasi menggunakan foreach atau fungsi iterator lainnya.
";
}
?>
Penjelasan:
angkaGenerator(int $max): Mendefinisikan fungsi generator yang menerima angka maksimum sebagai argumen.Generator: Menunjukkan bahwa fungsi ini mengembalikan objek generator.for ($i = 1; $i <= $max; $i++): Loop yang menghasilkan angka dari 1 hingga $max.yield $i: Menghasilkan nilai $i. Setiap kali yield dipanggil, eksekusi fungsi dihentikan dan nilai dikembalikan. Ketika iterator meminta nilai berikutnya, eksekusi dilanjutkan dari titik terakhir.foreach ($angka as $nilai): Mengiterasi objek generator dan mencetak setiap nilai.
$value) {
yield $key => $value;
}
}
$data = [
'nama' => 'John Doe',
'usia' => 30,
'pekerjaan' => 'Developer'
];
$generator = dataGenerator($data);
foreach ($generator as $key => $value) {
echo "$key: $value
";
}
?>
Penjelasan:
dataGenerator menerima array sebagai input.yield $key => $value: Menghasilkan nilai dengan kunci yang sesuai, memungkinkan kita untuk bekerja dengan data asosiatif.
Penjelasan:
bacaBarisFile membaca file baris per baris.fgets($file): Membaca satu baris dari file.yield: Tanpa yield, fungsi tidak akan menjadi generator.Buatlah sebuah generator yang menghasilkan bilangan Fibonacci hingga batas tertentu. Bilangan Fibonacci adalah urutan angka di mana setiap angka adalah jumlah dari dua angka sebelumnya (misalnya, 0, 1, 1, 2, 3, 5, 8...).