Comparación de objetos en PHP 7

El lenguaje PHP proporciona varios operadores de comparación que nos permiten comparar dos valores diferentes, lo que resulta en verdadero o falso:

  • ==: igual
  • ===: idéntico
  • ! =: no es igual
  • <>: no es igual
  • ! ==: no idéntico
  • <: menos de
  • >: mayor que
  • <=: menor o igual que
  • >=: mayor o igual que

Si bien todos estos operadores son igualmente importantes, echemos un vistazo más de cerca al comportamiento de los operadores iguales (==) e idénticos (===) en el contexto de los objetos.
Echemos un vistazo al siguiente ejemplo:

<?php
class User {
public $name = 'N/A';
public $age = 0;
}
$user = new User();
$employee = new User();
var_dump($user == $employee); // true
var_dump($user === $employee); // false

Aquí, tenemos una clase de usuario simple con dos propiedades establecidas en algunos valores predeterminados. Luego tenemos dos instancias diferentes de la misma clase, $ user y $ employee. Dado que ambos objetos tienen las mismas propiedades, con los mismos valores, el operador igual (==) devuelve cierto. El operador idéntico (===), por otro lado, devuelve falso. Aunque los objetos son de la misma clase y tienen las mismas propiedades y valores en esas propiedades, un operador idéntico los ve como diferentes.
Echemos un vistazo al siguiente ejemplo:

<?php
class User {
public $name = 'N/A';
public $age = 0;
}
$user = new User();
$employee = $user;
var_dump($user == $employee); // true
var_dump($user === $employee); // true

El operador idéntico (===) considera que dos objetos son idénticos solo si se refieren a la misma instancia de la misma clase. El mismo comportamiento del operador se aplica a los operadores de contraparte, es decir, los operadores no iguales (<> o! =) Y no idénticos (! ==).
Aparte de los objetos, el operador idéntico es aplicable a cualquier otro tipo:

<?php
var_dump(2 == 2); // true
var_dump(2 == "2"); // true
var_dump(2 == "2ABC"); // true
var_dump(2 === 2); // true
var_dump(2 === "2"); // false
var_dump(2 === "2ABC"); // false

Mirando el ejemplo anterior revela claramente la importancia de un operador idéntico.
La expresión 2 == «2ABC» que se evalúa como verdadera es algo que perturba la mente. Incluso podríamos considerarlo como un error en el lenguaje PHP en sí. Si bien confiar en la conversión automática de tipos de PHP está bien, hay veces en que errores inesperados pueden introducirse e interrumpir nuestra lógica de aplicación. El uso del operador idéntico reafirma la comparación, asegurando que consideremos no solo el valor sino también el tipo.

Comparte