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:
- 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”.
- 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”.
- 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 :
