Resumo : neste tutorial, você aprenderá como usar o __toString()
método PHP para retornar a representação em string de um objeto.
Introdução ao método PHP __toString()
Este __toString()
é um dos métodos mágicos em PHP. O seguinte mostra a sintaxe do __toString()
método:
public function __toString ( ) : string
Linguagem de código: PHP ( php )
O __toString()
método não aceita nenhum parâmetro e retorna uma string.
Quando você usa um objeto como se fosse uma string, o PHP chamará automaticamente o __toString()
método mágico. Se o método não existir, o PHP gera um erro.
O exemplo a seguir define a BankAccount
classe, cria uma nova instância de BankAccount
e exibe-a:
<?php
class BankAccount
{
private $accountNumber;
private $balance;
public function __construct(
$accountNumber,
$balance
) {
$this->accountNumber = $accountNumber;
$this->balance = $balance;
}
}
$account = new BankAccount('123456789', 100);
echo $account;
Linguagem de código: HTML, XML ( xml )
PHP gera o seguinte erro:
PHP Fatal error: Uncaught Error: Object of class BankAccount could not be converted to string...
Linguagem de código: texto simples ( texto simples )
Para usar o $account
objeto como uma string, você precisa implementar o __toString()
método que retorna a representação em string do BankAccount
objeto. Por exemplo:
<?php
class BankAccount
{
private $accountNumber;
private $balance;
public function __construct(
$accountNumber,
$balance
) {
$this->accountNumber = $accountNumber;
$this->balance = $balance;
}
public function __toString()
{
return "Bank Account: $this->accountNumber. Balance: $$this->balance";
}
}
$account = new BankAccount('123456789', 100);
echo $account;
Linguagem de código: HTML, XML ( xml )
Neste exemplo, __toString()
retorna uma string que contém o número da conta bancária e seu saldo atual. Aqui está a saída:
Bank Account: 123456789. Balance: $100
Linguagem de código: texto simples ( texto simples )
Observe que você pode usar o BankAccount
objeto em qualquer lugar que aceite uma string. Por exemplo, você pode concatenar uma string com o BankAccount
objeto assim:
$account = new BankAccount('123456789', 100);
echo 'Bank information:' . $account;
Linguagem de código: PHP ( php )
Saída:
Bank information:Bank Account: 123456789. Balance: $100
Linguagem de código: texto simples ( texto simples )
Valor de retorno
No PHP 7.4, o __toString()
método deve retornar uma string, caso contrário o PHP lançará um erro.
O exemplo a seguir define a Quarter
classe que representa o trimestre do ano. Ele implementa o __toString()
método que retorna um número:
<?php
class Quarter
{
private $number;
public function __construct($number)
{
if ($number < 0 && $number > 4) {
throw new InvalidArgumentException('Quarter must be between 1 and 4');
}
$this->number = $number;
}
public function __toString()
{
return $this->number;
}
}
$quarter = new Quarter(1);
echo $quarter;
Linguagem de código: HTML, XML ( xml )
PHP gera o seguinte erro:
Fatal error: Uncaught Error: Method Quarter::__toString() must return a string value
Linguagem de código: texto simples ( texto simples )
O PHP não força o número a uma string neste caso.
No PHP 8, você receberá o mesmo erro. No entanto, se você desabilitar a digitação estrita, o PHP forçará o valor de retorno a um valor de string.
Para desabilitar o tipo estrito, você segue a seguinte instrução:
declare(strict_types=0);
Linguagem de código: PHP ( php )
O exemplo a seguir funciona no PHP 8 com a digitação estrita desativada:
<?php
declare(strict_types=0);
class Quarter
{
private $number;
public function __construct($number)
{
if ($number < 0 && $number > 4) {
throw new InvalidArgumentException('Quarter must be between 1 and 4');
}
$this->number = $number;
}
public function __toString()
{
return $this->number;
}
}
$quarter = new Quarter(1);
echo $quarter;
Linguagem de código: HTML, XML ( xml )
Resumo
- Implemente o
__toString()
método mágico para criar a representação em string de um objeto. - O
__toString()
método deve retornar um valor de string ou o PHP gerará um erro.