Salve a todos,
Em recente labuta com as várias e várias formas de se fazer algo igual de forma diferente com o PHP, o que é extremamente bacana :), me deparei com uma função pra lá de útil quando estamos trabalhando com classes.
Mas desta vez eu encontrei apenas uma forma correta de fazer o que queria: Ao chamar o objeto ele me mostrar os valores de seus atributos, todos eles, sem ter que ficar criando um echo ou um print para cada um destes atributos.
Sim tem como sim.
Até pouco tempo atrás eu criava um método para quando eu o chamasse fosse impresso todos os valores dos atributos da classes, mas isso me forçava a invocar o objeto com o nome deste método:
<?php
// ...
$objeto->verValoresAtributos();
// ...
?>
Que tem de errado nisso? Nada! Mas, pra que você vai reinventar a roda se o PHP já lhe dá um método próprio para isso? Além do mais quando você usa o método correto você não precisa invocar o método, o PHP vai verificar que estar tentando exibir o objeto e ao invés de responder com uma resposta tipo:
Saída na tela: Catchable fatal error: Object of class NossaClasse could not be converted to string in /srv/www/htdocs/NossaClasse.php on line 16
Cá pra nós tem coisa mais chata do que uma resposta destas? Quando queria-mos algo como:
Saída na tela: Olá augustowebd, eu tenho aqui os seguintes atributos: atributo1: valor do atributo1, atributo2: valor do atributo 2, ...
Então vamos fazer a coisa da forma certa. Definamos uma classes para nosso teste.
<?php
class NossaClasse{
// atributo qualquer
private $nome;
// construtor recebe valor para atributo qualquer
public function NossaClasse( $nome = null ){
$this->nome = $nome;
}
public function __toString(){
return $this->nome;
}
}
?>
Agora é criar seu objeto e dá um echo.
<?php
// ...
$meuObjeto = new NossaClasse( "augustowebd" );
echo $meuObjeto;
?>
Por fim, vamos cientificamente conhecer o __toString:
A assinatura do __toString é: function string __toString( void )
O que quer dizer: Este método retorna uma string e que não recebe nenhum paramentro( void ).
Respondendo a pergunta do título: __toString com dois underlines :).
Um abraço e até a próxima.
Quarta-feira, Maio 02, 2007
Assinar:
Postar comentários (Atom)

0 comentários:
Postar um comentário