Sınıflar ve nesneler (PHP 4)
PHP Manual

Nesne Karşılaştırma

PHP 4'te, nesneler çok basit şekilde karşılaştırılırlar: İki nesne örneği, aynı özniteliklere ve değerlere sahipseler ve aynı sınıfın örnekleriyseler eşittirler. Nesneler aynılık (===) işleciyle karşılaştırılırken de aynı kurallar uygulanır.

Aşağıdaki kodu çalıştırdığımızı varsayalım:

Örnek 1 - PHP 4'te nesne karşılaştırma örneği

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

function 
compareObjects(&$o1, &$o2) {
    echo 
'o1 == o2 : '.bool2str($o1 == $o2)."\n";
    echo 
'o1 != o2 : '.bool2str($o1 != $o2)."\n";
    echo 
'o1 === o2 : '.bool2str($o1 === $o2)."\n";
    echo 
'o1 !== o2 : '.bool2str($o1 !== $o2)."\n";
}

class 
Bayrak {
    var 
$bayrak;

    function 
Bayrak($bayrak=true) {
            
$this->bayrak $bayrak;
    }
}

class 
DeğiştirilebilirBayrak extends Bayrak {

    function 
turnOn() {
        
$this->bayrak true;
    }

    function 
turnOff() {
        
$this->bayrak false;
    }
}

$o = new Bayrak();
$p = new Bayrak(false);
$q = new Bayrak();

$r = new DeğiştirilebilirBayrak();

echo 
"Aynı değiştirgelerle oluşturulmuş örnekleri karşılaştıralım.\n";
compareObjects($o$q);

echo 
"\nFarklı değiştirgelerle oluşturulmuş örnekleri karşılaştıralım.\n";
compareObjects($o$p);

echo 
"\nBir ebeveyn sınıf örneğini bir alt sınıfınki ile karşılaştıralım.\n";
compareObjects($o$r);
?>

Yukarıdaki örneğin çıktısı:

Aynı değiştirgelerle oluşturulmuş örnekleri karşılaştıralım.
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Farklı değiştirgelerle oluşturulmuş örnekleri karşılaştıralım.
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Bir ebeveyn sınıf örneğini bir alt sınıfınki ile karşılaştıralım.
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE
Çıktı, yukarıda verdiğimiz karşılaştırma kuralını doğrulamaktadır. Aynı sınıfın sadece özniteliklerinin değerleri aynı olan örnekleri eşit ve aynı kabul edilirler.

Bileşik nesnelerde de aynı karşılaştırma kuralları uygulanır. Aşağıdaki örnekte, Bayrak nesnelerinden oluşan bir ilişkisel diziyi saklayan bir taşıyıcı sınıf oluşturulmaktadır.

Örnek 2 - PHP 4'te bütünleşik nesnelerin karşılaştırılması

<?php
class BayrakAta {
    var 
$set;

    function 
BayrakAta($bayrakDizisi = array()) {
        
$this->set $bayrakDizisi;
    }

    function 
bayrakEkle($isim$bayrak) {
        
$this->set[$isim] = $bayrak;
    }

    function 
bayrakSil($isim) {
        if (
array_key_exists($isim$this->set)) {
            unset(
$this->set[$isim]);
        }
    }
}


$u = new BayrakAta();
$u->bayrakEkle('bayrak1'$o);
$u->bayrakEkle('bayrak2'$p);
$v = new BayrakAta(array('bayrak1'=>$q'bayrak2'=>$p));
$w = new BayrakAta(array('bayrak1'=>$q));

echo 
"\nu(o,p) ve v(q,p) birleşik nesneleri\n";
compareObjects($u$v);

echo 
"\nu(o,p) ve w(q)\n";
compareObjects($u$w);
?>

Yukarıdaki örneğin çıktısı:

u(o,p) ve v(q,p) birleşik nesneleri
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE

u(o,p) ve w(q)
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE


Sınıflar ve nesneler (PHP 4)
PHP Manual