Jämföra objekt

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

Jämförelse av objekt

När jämförelseoperatorn (==) används, jämförs objektvariabler på ett enkelt sätt, nämligen: Två objektinstanser är lika om de har samma attribut och värden (värden jämförs med ==) och är instanser av samma klass.

När identitetsoperatorn (===) används, är objektvariabler identiska endast om och endast om de refererar till samma instans av samma klass.

Ett exempel kommer att klargöra dessa regler.

Exempel #1 Exempel på objektjämförelse

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

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 Flag
{
    public $flag;

    function __construct($flag = true) {
        $this->flag = $flag;
    }
}

class OtherFlag
{
    public $flag;

    function __construct($flag = true) {
        $this->flag = $flag;
    }
}

$o = new Flag();
$p = new Flag();
$q = $o;
$r = new OtherFlag();

echo "Två instanser av samma klass\n";
compareObjects($o, $p);

echo "\nTvå referenser till samma instans\n";
compareObjects($o, $q);

echo "\nInstanser av två olika klasser\n";
compareObjects($o, $r);
?>

Exemplet ovan kommer att ge följande resultat:

Två instanser av samma klass
o1 == o2 : SANT
o1 != o2 : FALSKT
o1 === o2 : FALSKT
o1 !== o2 : SANT

Två referenser till samma instans
o1 == o2 : SANT
o1 != o2 : FALSKT
o1 === o2 : SANT
o1 !== o2 : FALSKT

Instanser av två olika klasser
o1 == o2 : FALSKT
o1 != o2 : SANT
o1 === o2 : FALSKT
o1 !== o2 : SANT

Notera:

Tillägg kan definiera egna regler för objektjämförelse (==).

Sidslut

Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.oop5.object-comparison.php
PHP
Språkreferens
Språkreferens#Klasser_och_Objekt


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/