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

Dúvida no Ex. 1 da Aula 1 - Começando com testes de unidade

Não estou conseguindo trabalhar pelo terminal. E quando utilizo o Xampp estou com este erro:

Notice: Undefined variable: leilao in C:\xampp\htdocs\inicial\Avaliador.php on line 10

Fatal error: Call to a member function getLances() on null in C:\xampp\htdocs\inicial\Avaliador.php on line 10

Arquivos:

Avaliador.php

<?php

    class Avaliador  {

        private $maiorValor = -INF;
        private $menorValor = INF;


        public function avalia() {
            foreach ($leilao->getLances() as $lance) {
                if ($lance->getValor() > $this->maiorDeTodos) {
                    $tihs->maiorDeTodos = $lance->getValor();
                }elseif ($lance->getValor() < $this->menorDeTodos) {
                    $this->menorDeTodos = $lance->getValor();
                }

            }
        }

        public function getMaiorLance() {
            return $this->maiorValor;
        }

        public function getMenorLance(){
            return $this->menorValor;
        }
    }
?>

AvaliadorTest.php

<?php
    require_once 'Usuario.php';
    require_once 'Lance.php';
    require_once 'Avaliador.php';
    require_once 'Leilao.php';

    class AvaliadorTest {

        public function test()    {

            $leilao = new Leilao("PlayStation4");

            $renan = new Usuario("Renan");
            $caio = new Usuario("Caio");
            $felipe = new Usuario("Felipe");

            $leilao->propoe(new Lance($renan, 400));
            $leilao->propoe(new Lance($caio, 350));
            $leilao->propoe(new Lance($felipe, 250));

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

            $maiorEsperado = 400;
            $menorEsperado = 250;

            var_dump($leiloeiro->getMaiorLance() == $maiorEsperado);
            var_dump($leiloeiro->getMenorLance() == $menorEsperado);
        }
    }
?>

Index.php

<?php
    require_once 'AvaliadorTest.php';

    $test = new AvaliadorTest();
    $test->test();




?>

Lance.php

<?php
    class Lance {
        private $usuario;
        private $valor;

        function __construct(Usuario $usuario,$valor) {
            $this->usuario = $usuario;
            $this->valor = $valor;
        }

        public function getUsuario() {
            return $this->usuario;
        }

        public function getValor() {
            return $this->valor;
        }
    }
?>

Leilao.php

<?php
    class Leilao {
        private $descricao;
        private $lances;

        function __construct($descricao) {
            $this->descricao = $descricao;
            $this->lances = array();
        }

        public function propoe(Lance $lance) {
            $this->lances[] = $lance;
        }

        public function getDescricao() {
            return $this->descricao;
        }

        public function getLances() {
            return $this->lances;
        }
    }
?>

Usuario.php

<?php
    class Usuario {
        private $id;
        private $nome;

        function __construct($nome,$id = null) {
            $this->nome = $nome;
            $this->id = $id;
        }

        public function getId() {
            return $this->id;
        }

        public function getNome() {
            return $this->nome;
        }

    }
?>
2 respostas
solução!

você precisa dizer para a classe de qual escopo você tirou a propriedade $leilao. não há herança e a variável $leilao = new Leilao está em escopo local de outra classe.

Obrigado Júlia, eu tinha conseguido solucionar mas esqueci de desativar o tópico. Mesmo assim valeu a atenção!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software