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:

User.php<?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:

index.php<?php
  $user = new User('john', 25);
?>

Agora, vamos tentar exibir o objeto criado usando echo:

index.php<?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:

User.php<?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:

index.php<?php
  $user = new User('john', 25);
  echo $user; // exibirá 'john' - está funcionando!
?>
Задание 1

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.