Saltar la navegación

1.3.2.- Utilización de objetos (II).

Imagen de parte de un teclado con retroalimentación azul.
Soumil Kumar (Dominio público)

A veces tienes dos objetos y quieres saber su relación exacta. Para eso, en PHP puedes utilizar los operadores "==" y "===".

Si utilizas el operador de comparación "==", comparas los valores de los atributos de los objetos. Por tanto dos objetos serán iguales si son instancias de la misma clase y, además, sus atributos tienen los mismos valores.

$p = new Producto();
$p->nombre = 'Samsung Galaxy A6';
$a = clone($p);
// El resultado de comparar $a == $p da verdadero
//  pues $a y $p son dos copias idénticas

Sin embargo, si utilizas el operador "===", el resultado de la comparación será true sólo cuando las dos variables sean referencias al mismo objeto.

$p = new Producto();
$p->nombre = 'Samsung Galaxy A6';
$a = clone($p);
// El resultado de comparar $a === $p da falso
//  pues $a y $p no hacen referencia al mismo objeto
$a = & $p;
// Ahora el resultado de comparar $a === $p da verdadero
//  pues $a y $p son referencias al mismo objeto.

A veces puede ser útil mostrar el contenido de un objeto sin tener que usar var_dump() para ello podemos usar el método mágico __toString(). Este método siempre debe devolver un String.

class Persona{
    public $nombre;
    public $apellidos;
    public $perfil;
    public function __toString() :String{
        return "{$this->apellidos}, {$this->nombre}, Tu pérfil es: {$this->perfil}";
     }
}
    
$persona = new Persona();
$persona->nombre="Manuel";
$persona->apellidos="Gil Gil";
$persona->perfil="Público";
echo $persona; //muestra: Gil Gil, Manuel, Tu pérfil es: Público