
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