Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Estou começando a brincar com o PHP orientado a objetos, e me deparei com um probleminha...
Criei uma função bem besta pra retornar o ano atual...
<?php
class Ano
{
public function __construct()
{
return $ano = date('Y');
}
}
echo $ano = new Ano();
Quando dou echo no objeto da classe aparece a mensagem dizendo que o objeto da classe não pode ser convertido em string.
Como eu faria para mostrar o retorno deste objeto na tela?
Desde ja agradeço!Olá @jamesbond, obrigado pela resposta.
Fiz desta forma e continua o mesmo erro :/
Segue como ficou o código:
<?php
class Ano
{
public function __construct()
{
return date('Y');
}
}
$ano = new Ano();
echo $ano;Ah sim, agora que me dei conta desculpe-me pela falta de atenção.
Até onde eu sei, construtores não retornam valores.
Se você atribuir valores a propriedades e depois dar um print_r na variável que está sendo atribuída para receber o valor retornado, verá que o 'retorno' foi da própria classe.
Nesse caso você pode fazer o seguinte:
<?php
class Ano
{
public static function retornar()
{
return date('Y');
}
}
echo Ano::retornar();<?php
class Ano
{
public function getAno()
{
return date('Y');
}
}
$ano = new Ano();
$ano->getAno();
echo $ano;
Fiz assim e continua com a mesma mensagem. Esta errado desta forma?>
4 minutos atrás, Gabrielvt14 disse:
<?php
class Ano
{
public function getAno()
{
return date('Y');
}
}
$ano = new Ano();
$ano->getAno();
echo $ano;
Fiz assim e continua com a mesma mensagem. Esta errado desta forma?
O seu problema é entender como funciona a referência da POO.
Vamos lá:
Você instanciou a classe Ano na variável ano.
Logo abaixo você pegou o valor atual do ano com um getter, mas não fez nada com esse valor
não atribuiu a uma variável e nem mandou exibir.
No caso você continua mandando escrever o objeto.
Substitua o seu echo por esse:
echo $ano->getAno();Ah sim... agora entendi. Deste jeito funcionou
$ano = new Ano();
echo $ano->getAno();
Eu tenho então que tomar uma ação quando chamo a variável, né?
Neste caso também funcionaria então...
$ano = new Ano();
$mostraAno = $ano->getAno();
echo $mostraAno;
Agora entendi onde estava errando. Muito obrigado pela ajuda @jamesbond>
1 minuto atrás, Gabrielvt14 disse:
Ah sim... agora entendi. Deste jeito funcionou
$ano = new Ano();
echo $ano->getAno();
Eu tenho então que tomar uma ação quando chamo a variável, né?
Neste caso também funcionaria então...
$ano = new Ano();
$mostraAno = $ano->getAno();
echo $mostraAno;
Correto. Quando você espera receber um determinado valor através de um retorno, você não só pode chamar o método.
É necessário que você trate esse valor retornado de alguma forma, seja atribuindo à uma variável ou escrevendo na tela.
Você só fará referência a métodos da forma 'seca' quando esses métodos não lhe retornarem valores e sim tratar regras de negócios.
Caso precise de ajuda em mais algo estou no skype: tevalen22.
[]s.
Oi amigo, tudo bom?
Você não precisa fazer dessa forma. Basta apenas fazer o seguinte: