Saturday, December 6, 2014

Tutorial PHP OOP Part 21 : Perbandingan Object

Perbandingan antara dua buah object dapat dilakukan dengan operator perbandingan (==) seperti yang sering dipakai pada saat menggunakan logika IF. Dengan cara ini, kedua object diperbandingkan secara sederhana. Hasil dari operator (==) akan bernilai benar (TRUE) jika kedua object memiliki atribut dan nilai yang sama dan juga merupakan instantisasi dari class yang sama.

Selain operator perbandingan (==) pada PHP juga terdapt operator identik yaitu (===) atau tanda sama dengan yang ditulis tiga kali. Bila menggunakan operator identitas (===), variabel object disebut identik dan menghasilkan nilai benar (TRUE) jika dan hanya jika mereka mengacu pada instantisasi yang sama dari kelas yang sama.

Contoh penggunaan operator perbandingan (==) dan operator identik (===)

 <?php  
 function bool2str($bool)  
 {  
   if ($bool === false) {  
     return 'SALAH';  
   } else {  
     return 'BENAR';  
   }  
 }  

 function Bandingkan(&$object1,$namaobject1, &$object2,$namaobject2)  
 {  
   echo $namaobject1 .' == '.$namaobject2.' -> '. bool2str($object1 == $object2) . "<br/>";  
   echo $namaobject1 .' != '.$namaobject2.' -> '. bool2str($object1 != $object2) . "<br/>";  
   echo $namaobject1 .' === '.$namaobject2.' -> '. bool2str($object1 === $object2) . "<br/>";  
   echo $namaobject1 .' !== '.$namaobject2.' -> '. bool2str($object1 !== $object2) . "<br/>";  
 }  

 class Class1  
 {  
   public $contoh;  
   function Test1($contoh = true) {  
     $this->contoh = $contoh;  
   }  
 }  

 class Class2  
 {  
   public $contoh;  
   function Test2($contoh = true) {  
     $this->contoh = $contoh;  
   }  
 }  

 $object1 = new Class1();  
 $object2 = new Class1();  
 $object3 = $object1;  
 $object4 = new Class2();  

 echo "<h1>Kriteria perbandingan :</h1>  
 ".htmlspecialchars("$")."object1 = new Class1();<br/>  
 ".htmlspecialchars("$")."object2 = new Class1();<br/>  
 ".htmlspecialchars("$")."object3 = ".htmlspecialchars("$")."object1;<br/>  
 ".htmlspecialchars("$")."object4 = new Class2();<br/>  
 <br/>  
 ";  

 echo "<h1>Hasil Perbandingan :</h1>";  

 echo "<b>Dua instantisasi dari class yang sama :</b><br/>";  
 Bandingkan($object1,'$object1', $object2,'$object2');  

 echo "<br/><b>Dua reference dari instantisasi yang sama :</b><br/>";  
 Bandingkan($object1,'$object1', $object3,'$object3');  

 echo "<br/><b>Instantisasi dari dua class berbeda :</b><br/>";  
 Bandingkan($object1,'$object1', $object4,'$object4');  
 ?>  

Jika program diatas dijalankan akan tampil hasil perbandingan seperti ini :

Kriteria perbandingan :

$object1 = new Class1();
$object2 = new Class1();
$object3 = $object1;
$object4 = new Class2();

Hasil Perbandingan :

Dua instantisasi dari class yang sama :
$object1 == $object2 -> BENAR
$object1 != $object2 -> SALAH
$object1 === $object2 -> SALAH
$object1 !== $object2 -> BENAR

Dua reference dari instantisasi yang sama :
$object1 == $object3 -> BENAR
$object1 != $object3 -> SALAH
$object1 === $object3 -> BENAR
$object1 !== $object3 -> SALAH

Instantisasi dari dua class berbeda :
$object1 == $object4 -> SALAH
$object1 != $object4 -> BENAR
$object1 === $object4 -> SALAH
$object1 !== $object4 -> BENAR

Penjelasan program :

Dari percobaan diatas dapat diperoleh beberapa kondisi, yaitu:
  1. Object1 dan Object2 merupakan object yang di instantisasi dari class yang sama, maka ketika dibandingkan dengan operator (==) menghasilkan "BENAR" dan ketika dibandingkan dengan operator (===) menghasilkan "SALAH".
  2. Object1 dan Object3 merupakan object yang direferen dari instantisasi dari class yang sama, maka ketika dibandingkan dengan operator (==) menghasilkan "BENAR" dan ketika dibandingkan dengan operator (===) menghasilkan "BENAR".
  3. Object1 dan Object4 merupakan object yang diinstantisasi dari class yang berbeda, maka ketika dibandingkan dengan operator (==) menghasilkan "SALAH" dan ketika dibandingkan dengan operator (===) menghasilkan "SALAH".
Referensi :

0 komentar

Post a Comment