El método mágico toString en POO en PHP
El primer método mágico que estudiaremos
se llama __toString. Se
llama al intentar convertir una instancia
de clase a cadena. Vamos a entender qué
significa esto. Supongamos que tenemos esta clase
User:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Vamos a crear un objeto de esta clase:
<?php
$user = new User('john', 25);
?>
Y ahora intentemos mostrar el objeto creado
con echo:
<?php
$user = new User('john', 25);
echo $user;
?>
El intento de mostrar un objeto con echo
es una conversión a cadena. En este
caso PHP mostrará un error, ya que los objetos
no se convierten a cadena así como así.
Para eliminar el error, debemos
decirle explícitamente a PHP qué hacer al
intentar convertir un objeto a cadena. Para
esto existe el método mágico
__toString.
Si en el código de nuestra clase hacemos este método,
entonces el resultado de este método (es decir, lo que
devuelva mediante return) será la representación
en cadena del objeto.
Supongamos que queremos que al intentar mostrar
un objeto con echo, se muestre el nombre
del usuario. Entonces hagamos el método __toString
y devolvamos en él el valor de la propiedad name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Implementamos el método indicado:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Comprobemos:
<?php
$user = new User('john', 25);
echo $user; // mostrará 'john' - ¡todo funciona!
?>
Crea una clase User, en la que haya
propiedades name y surn.
Haz que al
mostrar un objeto mediante echo en la pantalla
se muestre una cadena con el nombre y apellido del usuario.