Menu Navigasi

Tutorial Tutorial Pemrograman Part 64: Memahami dan Menggunakan Generators di PHP

AI Generated
30 Desember 2025
19 views
Tutorial Tutorial Pemrograman Part 64: Memahami dan Menggunakan Generators di PHP

Pendahuluan

Selamat datang di part 64 dari seri tutorial Tutorial Pemrograman! Pada bagian ini, kita akan menyelami konsep generators di PHP. Generators adalah cara yang sangat efisien untuk menangani data dalam jumlah besar tanpa membebani memori. Jika Anda sudah familiar dengan iterator dan fungsi, bagian ini akan memperluas pemahaman Anda tentang pemrograman efisien di PHP.

Prasyarat:

  • Pemahaman dasar tentang fungsi dan loops di PHP.
  • Sebaiknya sudah memahami konsep iterator (meskipun tidak wajib, akan membantu).
  • Koneksi dengan Part sebelumnya: Pemahaman tentang Asynchronous Programming with ReactPHP akan membantu Anda menghargai efisiensi memori yang ditawarkan generators.

Konsep Dasar

Bayangkan Anda memiliki buku telepon yang sangat besar. Jika Anda ingin membaca setiap nama di buku itu, cara tradisional adalah memuat seluruh buku ke memori komputer. Ini akan memakan banyak memori, terutama jika buku telepon itu sangat tebal. Generators menawarkan solusi yang lebih baik.

Alih-alih memuat seluruh buku ke memori, generators menghasilkan satu nama setiap kali diminta. Ketika Anda selesai membaca nama itu, generator menghasilkan nama berikutnya. Proses ini berlanjut sampai Anda mencapai akhir buku. Dengan cara ini, Anda hanya memuat satu nama ke memori pada satu waktu, menghemat banyak sumber daya.

Dalam istilah pemrograman, generator adalah fungsi yang menghasilkan nilai satu per satu (yield), daripada mengembalikan seluruh array sekaligus. Ini sangat berguna ketika bekerja dengan dataset besar atau perhitungan yang kompleks.

Hands-on Coding

Mari kita lihat contoh sederhana:


";
}
?>

Penjelasan Kode:

  • `function numberGenerator(int $start, int $end): Generator`: Mendefinisikan fungsi generator yang menerima dua integer sebagai argumen (start dan end) dan mengembalikan objek `Generator`.
  • `for ($i = $start; $i <= $end; $i++) { ... }`: Sebuah loop for yang menghasilkan angka dari `$start` sampai `$end`.
  • `yield $i;`: Keyword `yield` adalah inti dari generator. Alih-alih mengembalikan nilai, `yield` menghasilkan nilai `$i` dan menangguhkan eksekusi fungsi. Eksekusi akan dilanjutkan saat nilai berikutnya diminta.
  • `$numbers = numberGenerator(1, 5);`: Membuat objek generator dengan memanggil fungsi `numberGenerator`.
  • `foreach ($numbers as $number) { ... }`: Looping melalui objek generator. Setiap iterasi loop memicu generator untuk menghasilkan nilai berikutnya.

Contoh lain yang lebih kompleks, menggunakan `key` dan `value`:


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

$myArray = [
 'name' => 'John',
 'age' => 30,
 'city' => 'New York'
];

$myGenerator = arrayGenerator($myArray);

foreach ($myGenerator as $key => $value) {
 echo "Key: " . $key . ", Value: " . $value . "
"; } ?>

Penjelasan Kode:

  • `function arrayGenerator(array $data): Generator`: Fungsi ini menerima array sebagai input.
  • `foreach ($data as $key => $value) { ... }`: Loop melalui array.
  • `yield $key => $value;`: Menghasilkan key dan value dari array.

Common Pitfalls

  • Lupa menggunakan `yield`: Jika Anda tidak menggunakan `yield`, fungsi Anda tidak akan menjadi generator.
  • Memuat seluruh data ke dalam memori sebelum menghasilkan: Tujuan dari generator adalah untuk menghindari pemuatan data yang besar ke dalam memori. Pastikan Anda menghasilkan nilai secara bertahap.
  • Mencoba mengakses generator yang sudah habis: Setelah generator mencapai akhir, ia tidak akan menghasilkan nilai lagi. Cobalah untuk membuat generator baru jika Anda ingin mengulanginya.

Challenge

Buat generator yang menghasilkan bilangan Fibonacci hingga angka tertentu. Misalnya, jika inputnya 100, generator harus menghasilkan urutan Fibonacci hingga nilai tidak melebihi 100.

Sumber Referensi

Bagikan: