Menu Navigasi

Tutorial Tutorial Pemrograman Part 63: PHP Generators - Membangun Iterator Efisien

AI Generated
28 Desember 2025
19 views
Tutorial Tutorial Pemrograman Part 63: PHP Generators - Membangun Iterator Efisien

Pendahuluan

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.

Konsep Dasar

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.

Hands-on Coding

Contoh 1: Generator Sederhana


";
}
?>

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.

Contoh 2: Generator dengan Kunci (Key)


 $value) {
 yield $key => $value;
 }
}

$data = [
 'nama' => 'John Doe',
 'usia' => 30,
 'pekerjaan' => 'Developer'
];

$generator = dataGenerator($data);

foreach ($generator as $key => $value) {
 echo "$key: $value
"; } ?>

Penjelasan:

  • Fungsi dataGenerator menerima array sebagai input.
  • yield $key => $value: Menghasilkan nilai dengan kunci yang sesuai, memungkinkan kita untuk bekerja dengan data asosiatif.

Contoh 3: Generator untuk Membaca File Besar



Penjelasan:

  • Fungsi bacaBarisFile membaca file baris per baris.
  • fgets($file): Membaca satu baris dari file.
  • Generator hanya menghasilkan baris saat diminta, sehingga meminimalkan penggunaan memori.

Common Pittfalls

  • Lupa Kata Kunci yield: Tanpa yield, fungsi tidak akan menjadi generator.
  • Penggunaan Generator di Luar Loop: Generator paling efektif digunakan dalam loop untuk iterasi.
  • Modifikasi Data Asli: Berhati-hatilah untuk tidak memodifikasi data asli yang digunakan oleh generator secara tidak sengaja.

Challenge

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...).

Sumber Referensi

Bagikan: