Сравнение на обекти, ръководство за PHP
Когато използвате оператора за сравнение (==), свойствата на обектите просто се сравняват едно с друго, а именно: два обекта са равни, ако съдържат едни и същи свойства и едни и същи стойности и са екземпляри от един и същи клас.
Когато използвате оператора за идентичност (===), променливите на обекта се считат за идентични, ако и само ако се отнасят към един и същи екземпляр от същия клас.
Следващият пример ще изясни.
Пример #1 PHP 5 пример за сравнение на обект
функция bool2str ( $bool ) if ( $bool === false ) връща 'FALSE' ; > иначе връща 'TRUE'; > >
функция compareObjects (& $o1 , & $o2 ) echo 'o1 == o2 : '. bool2str ($o1 == $o2) . "\н" ; echo 'o1 != o2 : '. bool2str ($o1 != $o2) . "\н" ; echo 'o1 === o2 : ' . bool2str ($o1 === $o2) . "\н" ; echo 'o1 !== o2 : '. bool2str ($o1 !== $o2) . "\n" ; >
class Flag public $flag ;
флаг на функцията ( $flag = true ) $this -> флаг = $флаг; > >
клас OtherFlag публичен $флаг;
функция OtherFlag ( $flag = true ) $this -> флаг = $флаг; > >
$o = нов флаг(); $p = нов флаг(); $q = $o ; $r = нов OtherFlag();
echo "Два екземпляра от един и същ клас\n" ; сравняване на обекти ($o, $p);
echo "\nДве препратки към едно и също копие\n" ; сравняване на обекти ($o, $q);
echo "\nЕкземпляри на два различни класа\n" ; сравняване на обекти ($o, $r); ?>
Резултатът от изпълнението на този пример:
Разширенията могат да дефинират свои собствени правила за сравняване на своите обекти (==).