   #PHP Manual Classes and Objects Comparing objects in PHP 4 References
   Explained

                  PHP Manual
   Prev Chapter 13. Classes and Objects Next
   ______________________________________________________________________

Comparing objects in PHP 5

   Warning

   This extension is EXPERIMENTAL. The behaviour of this extension --
   including the names of its functions and anything else documented
   about this extension -- may change without notice in a future release
   of PHP. Use this extension at your own risk.

   In PHP 5, object comparison is a more complicated than in PHP 4 and
   more in accordance to what one will expect from an Object Oriented
   Language (not that PHP 5 is such a language).

   When using the comparison operator (==), object variables are compared
   in a simple manner, namely: Two object instances are equal if they
   have the same attributes and values, and are instances of the same
   class.

   On the other hand, when using the identity operator (===), object
   variables are identical if and only if they refer to the same instance
   of the same class.

   An example will clarify these rules.

   Example 13-3. Example of object comparison in PHP 5
   <?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 Flag {
       var $flag;
       function Flag($flag=true) {
               $this->flag = $flag;
       }
   }
   class OtherFlag {
       var $flag;
       function OtherFlag($flag=true) {
               $this->flag = $flag;
       }
   }
   $o = new Flag();
   $p = new Flag();
   $q = $o;
   $r = new OtherFlag();
   echo "Two instances of the same class\n";
   compareObjects($o, $p);
   echo "\nTwo references to the same instance\n";
   compareObjects($o, $q);
   echo "\nInstances of two different classes\n";
   compareObjects($o, $r);
   ?>
   This example will output:
Two instances of the same class
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Two references to the same instance
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE

Instances of two different classes
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE
   ______________________________________________________________________

   Prev                       Home                 Next
   Comparing objects in PHP 4  Up  References Explained
