Comparación de objetos

En PHP 5 cuando usamos el operador de comparación (==), las variables del objeto son comparadas de una forma simple, es decir, dos instancias de objetos son iguales si tienes los mismos atributos y valores, y son instancias de la misma clase.

Por otro lado, cuando se usa el operador idéntico (===), las variables del objeto son idénticas sólo si refieren a la misma instancia de la misma clase.

El siguiente ejemplo, extraído del manual de PHP, realiza comparaciones entre objetos y muestra por pantalla el valor de esascomparaciones.

<?php
   function bool2str($bool)
   {
      if ($bool === false) {
         return 'FALSE';
      } else {
         return 'TRUE';
      }
   }
   function 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) . ;
   }
   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 "Dos instancias de la misma clase<hr />";
   compareObjects($o, $p);
   echo "<br />Dos referencias apuntando a la misma instancia<hr />";
   compareObjects($o, $q);
   echo "<br />Instancias de dos clases diferentes<hr />";
   compareObjects($o, $r);
?>

Resultado:

Dos instancias de la misma clase
________________________________________
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE
Dos referencias apuntando a la misma instancia
________________________________________
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE
Instancias de dos clases diferentes
________________________________________
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE

results matching ""

    No results matching ""