Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Undefined method 'getMaiorValor'

Erro no código e não executa

<?php

namespace Alura\Leilao\Service;

use Alura\Leilao\Model\Leilao;

class Avaliador
{
    private $maiorValor;

    public function avalia(Leilao $leilao): void
    {
        $lances = $leilao->getLances();
        $ultimoLance = $lances[count($lances) - 1];
        $this->maiorValor = $ultimoLance->getValor();
    }

    public function getMaiorValor(): float
    {
        return $this->maiorValor;
    }

} 
4 respostas
<?php

use Alura\Leilao\Model\Lance;
use Alura\Leilao\Model\Leilao;
use Alura\Leilao\Model\Usuario;
use Alura\Leilao\Service\Avaliador;

require 'vendor/autoload.php';

$leilao = new Leilao('Fiat 147 0km');

$maria = new Usuario('Maria');
$joao = new Usuario('Joao');

$leilao->recebeLance(new Lance($joao, 2000));
$leilao->recebeLance(new Lance($maria, 2500));

$leiloeiro = new Avaliador();
$leiloeiro->avalia($leilao);

$maiorValor = $leilao->getMaiorValor();

echo $maiorValor;

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Olá, Antony! Parece que você está tendo problemas com o método 'getMaiorValor'. De acordo com o código que você compartilhou, tudo parece estar correto.

No entanto, o erro 'Undefined method' geralmente ocorre quando o método que você está tentando chamar não existe ou não está acessível no contexto atual.

No seu caso, o método 'getMaiorValor' está definido na classe 'Avaliador' e é público, portanto, deve ser acessível de qualquer lugar.

Um possível problema pode ser a forma como você está tentando chamar o método. Você deve chamar o método em uma instância da classe 'Avaliador'. Aqui está um exemplo de como você pode fazer isso:

$avaliador = new Avaliador();
$avaliador->avalia($leilao);
$maiorValor = $avaliador->getMaiorValor();

Neste exemplo, primeiro criamos uma nova instância da classe 'Avaliador'. Em seguida, chamamos o método 'avalia' nesta instância, passando o leilão como argumento. Finalmente, chamamos o método 'getMaiorValor' na mesma instância para obter o maior valor.

Se você estiver fazendo isso e ainda assim estiver enfrentando o problema, pode ser que haja algum erro no código que não esteja mostrado aqui. Verifique se o arquivo está sendo incluído corretamente e se não há erros de digitação no nome do método ou da classe.

Espero ter ajudado e bons estudos!

Deu certo, muito obrigado!