Home » PHP » OOP PHP : Iterable – Kode dan Contohnya

OOP PHP : Iterable – Kode dan Contohnya

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Section Artikel

PHP – Pengertiann Iterable

Sebuah iterable adalah nilai apa pun yang dapat diulangi dengan menggunakan perulangan foreach().

Pseudo-type iterable diperkenalkan di PHP 7.1 dan dapat digunakan sebagai tipe data untuk argumen fungsi dan nilai pengembalian fungsi.

PHP – Menggunakan Iterables

Kata kunci iterable dapat digunakan sebagai tipe data dari argumen fungsi atau sebagai tipe hasil dari sebuah fungsi:

Contoh
Gunakan argumen fungsi yang dapat diulang:

<?php
function printIterable(iterable $myIterable) {
  foreach($myIterable as $item) {
    echo $item;
  }
}

$arr = ["a", "b", "c"];
printIterable($arr);
?>
  //Output : abc

Contoh
Kembalikan iterable:

<?php
function getIterable():iterable {
  return ["a", "b", "c"];
}

$myIterable = getIterable();
foreach($myIterable as $item) {
  echo $item;
}
?>
  //Output : abc

PHP – Membuat Iterables

Array

Semua array bersifat iterable, jadi array apa pun dapat digunakan sebagai argumen dari suatu fungsi yang memerlukan iterable.

Iterator

Objek apa pun yang mengimplementasikan antarmuka Iterator dapat digunakan sebagai argumen dari suatu fungsi yang memerlukan iterable.

Sebuah iterator berisi daftar item dan menyediakan metode untuk mengulanginya. Hal itu membuat penunjuk ke salah satu elemen dalam daftar. Setiap item dalam daftar harus memiliki kunci yang dapat digunakan untuk menemukan item tersebut.

Sebuah iterator harus memiliki metode ini:

  • current() – Mengembalikan elemen yang saat ini diarahkan oleh penunjuk. Ini bisa berupa tipe data apa pun
  • key() – Mengembalikan kunci yang terkait dengan elemen saat ini dalam daftar. Ini hanya dapat berupa integer, float, boolean, atau string
  • next() – Memindahkan penunjuk ke elemen berikutnya dalam daftar
  • rewind() – Memindahkan penunjuk ke elemen pertama dalam daftar
  • valid() – Jika penunjuk internal tidak menunjuk ke elemen apa pun (misalnya, jika next () dipanggil di akhir daftar), ini akan mengembalikan false. Ini mengembalikan true dalam kasus lain

Contoh
Implementasikan antarmuka Iterator dan gunakan sebagai iterable:

<?php
// Buat Iterator
class MyIterator implements Iterator {
  private $items = [];
  private $pointer = 0;

  public function __construct($items) {
    // array_values() memastikan bahwa kuncinya adalah angka
    $this->items = array_values($items);
  }

  public function current() {
    return $this->items[$this->pointer];
  }

  public function key() {
    return $this->pointer;
  }

  public function next() {
    $this->pointer++;
  }

  public function rewind() {
    $this->pointer = 0;
  }

  public function valid() {
    // count() menunjukkan berapa banyak item dalam daftar
    return $this->pointer < count($this->items);
  }
}

// Fungsi yang menggunakan iterable
function printIterable(iterable $myIterable) {
  foreach($myIterable as $item) {
    echo $item;
  }
}

// Gunakan iterator sebagai iterable
$iterator = new MyIterator(["a", "b", "c"]);
printIterable($iterator);
?>
   //Output : abc

You may also like