Jämföra objekt
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/