Método Mágico toString em POO em PHP
O primeiro método mágico que vamos
estudar chama-se __toString. Ele
é chamado ao tentar converter uma instância da
classe para string. Vamos entender o que
isso significa. Suponha que temos a seguinte classe
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 criar um objeto desta classe:
<?php
$user = new User('john', 25);
?>
Agora, vamos tentar exibir o objeto criado
usando echo:
<?php
$user = new User('john', 25);
echo $user;
?>
Tentar exibir um objeto via echo
é uma conversão para string. Neste
caso, o PHP lançará um erro, pois objetos
não podem ser simplesmente convertidos em string.
Para evitar o erro, precisamos
explicitamente dizer ao PHP o que fazer ao
tentar converter o objeto em string. É para
isso que existe o método mágico
__toString.
Se criarmos esse método em nosso código de classe,
então o resultado desse método (ou seja, o que
ele retornar via return) será a representação
string do objeto.
Suponha que queremos que, ao tentar exibir
o objeto via echo, seja exibido o nome
do usuário. Então, vamos criar o método __toString
e retornar nele o valor da propriedade name:
<?php
class User
{
private $name;
private $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// Vamos implementar o método especificado:
public function __toString()
{
return $this->name;
}
public function getName()
{
return $this->name;
}
public function getAge()
{
return $this->age;
}
}
?>
Vamos testar:
<?php
$user = new User('john', 25);
echo $user; // exibirá 'john' - está funcionando!
?>
Crie uma classe User, na qual haverá
as propriedades name e surn.
Faça com que, ao
exibir o objeto via echo na tela,
seja exibida uma string com o nome e sobrenome do usuário.