Put the result of the function

0

Hello, I'm looking to display my result from my calculating function but it's not going, could you help me? I'm kind of a layperson in php.

error that is giving when I run the site: Notice: Undefined property: Person :: $ calculateImc in C: \ xampp \ htdocs \ pw1 \ class \ 0608 \ exampleFormula \ php \ classes \ Person.php on line 69

Pessoa.php  
<?php  
class Pessoa
{
    private $nome;
    private $idade;
    private $peso;
    private $altura;

    public function setNome($nome)
    {
        $this->nome = $nome;
    }

    public function setIdade($idade)
    {
        $this->idade = $idade;
    }

    public function setPeso($peso)
    {
        $this->peso = $peso;
    }

    public function setAltura($altura)
    {
        $this->altura = $altura;
    }

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

    public function getIdade()
    {
        return $this->idade;
    }

    public function getPeso()
    {
        return $this->peso;
    }

    public function getAltura()
    {
        return $this->altura;
    }

    public function calcularImc($peso, $altura)
    {
        return $peso/($altura * $altura);
    }

    public function cadastrar($nome, $idade, $peso, $altura)
    {
        $this->nome = $nome;
        $this->idade = $idade;
        $this->peso = $peso;
        $this->altura = $altura;
    }

    public function exibir()
    {

        return"<b>Nome</b>: $this->nome<br>
               <b>Idade</b>: $this->idade<br>
               <b>peso</b>: $this->peso<br>
               <b>altura</b>: $this->altura<br>
               <b>imc</b>: $this->calcularImc<br>";
    }

}

? >

sistema.php

<?php  
if (isset($_POST['pagina'])) {
    include 'classes/pessoa.php';

    $p = new Pessoa();

    $p->cadastrar($_POST['nome'], $_POST['idade'], $_POST['peso'], $_POST['altura']);

    echo "<div>".$p->exibir()."</div>";
}
else{
    echo "teste";
}

echo '<br><br><a href="../index.php">Voltar<a>';

? >

    
asked by anonymous 07.08.2018 / 00:34

1 answer

1

The error is in your CalculateImc method that gets 2 parameters and you are not passing. You have two solutions.

The first

Replace in your display method:

  

$this->calcularImc to {$this->calcularImc($this->peso, $this->altura)}

The second solution that is most recommended

Modify your CalculateImc method to use the attributes:

public function calcularImc()
{
    return $this->peso/($this->altura * $this->altura);
}

And modify your display method:

  

$this->calcularImc to {$this->calcularImc()}

    
07.08.2018 / 01:05