Examples:
Example of object comparison in PHP 5
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.
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | <?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 { public $flag ; function Flag( $flag = true) { $this ->flag = $flag ; } } class OtherFlag { public $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 ); ?> |
The above 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
Please login to continue.