Wednesday, December 3, 2014

Tutorial PHP OOP Part 18 : Perulangan Object Dengan Interface Iterator

Perulangan object atau dalam bahasa inggris disebut dengan object iteration adalah sebuah perulangan dalam menampilkan properti yang ada dalam object. PHP memberi jalan bagi sebuah object agar bisa didefinisikan, jadi dalam hal ini dimungkinkan membuat perulangan melalui sebuah daftar item misalnya menggunakan foreach. Secara default semua properti yang visible akan ditampilkan termasuk properti protected dan private.

Perulangan object secara sederhana

 <?php  
 class MyClass  
 {  
   public $var1 = 'value 1';  
   public $var2 = 'value 2';  
   public $var3 = 'value 3';  

   protected $protected = 'protected var';  
   private  $private  = 'private var';  

   function Ulang() {  
     echo "MyClass::Ulang :<br/>";  
     foreach($this as $key => $value) {  
       print "$key => $value<br/>";  
     }  
   }  
 }  

 $class = new MyClass();  

 foreach($class as $key => $value) {  
   print "$key => $value<br/>";  
 }  

 echo "<br/>";  

 $class->Ulang();  
 ?>  
Program diatas akan menampilkan :
var1 => value 1
var2 => value 2
var3 => value 3

MyClass::Ulang:
var1 => value 1
var2 => value 2
var3 => value 3
protected => protected var
private => private var

Perulangan object dengan Interface "Iterator"

PHP menyediakan sebuah interface untuk menangani perulangan object yang diberi nama Iterator. Dengan sebuah interface Iterator, sebuah object dapat menentukan bagaimana sebuah object akan diulang dan nilai apa saja yang tersedia pada setiap perulangan.

Interface Iterator digunakan untuk mengakses dan atau memanipulasi sebuah array/list. Dengan mengimplementasikan interface Iterator maka kita dapat menggunakan foreach pada class yang dibuat seperti halnya array.

Interface Iterator memiliki 5 fungsi yang harus diimplementasikan, yaitu :
  1. rewind(), mereset pointer array kembali 0 atau awal
  2. current(), mengembalikan nilai elemen dari pointer saat ini.
  3. key(), mengembalikan pointer saat ini.
  4. next(), mengembalikan elemen selanjutnya dan memperbarui pointer
  5. valid(), memvalidasi bahwa ada sebuah element dari pointer saat ini.

Contoh penggunaan interface Iterator :

 <?php  
 class Ulang implements Iterator  
 {  
   private $var = array();  
   public function __construct($array)  
   {  
     if (is_array($array)) {  
       $this->var = $array;  
     }  
   }  
   public function rewind()  
   {  
     echo "rewinding<br/><br/>";  
     reset($this->var);  
   }  
   public function current()  
   {  
     $var = current($this->var);  
     echo "current: $var<br/><br/>";  
     return $var;  
   }  
   public function key()   
   {  
     $var = key($this->var);  
     echo "key: $var<br/><br/>";  
     return $var;  
   }  
   public function next()   
   {  
     $var = next($this->var);  
     echo "next: $var<br/><br/>";  
     return $var;  
   }  
   public function valid()  
   {  
     $key = key($this->var);  
     $var = ($key !== NULL && $key !== FALSE);  
     echo "valid: $var<br/><br/>";  
     return $var;  
   }  
 }  
 $values = array(1,2,3);  
 $object = new Ulang($values);  
 foreach ($object as $a => $b) {  
   print "$a: $b<br/>";  
 }  
 ?>  

Jika program diatas dijalankan akan tampil :

rewinding

valid: 1

current: 1

key: 0

0: 1
next: 2

valid: 1

current: 2

key: 1

1: 2
next: 3

valid: 1

current: 3

key: 2

2: 3
next: 

valid: 

Referensi :

0 komentar

Post a Comment