1
resposta

__construct e a validação do preco > 0

Ei pessoal, criei o construtor e migrei a validação de preco > 0 para dentro dele. Assim:

function __construct($nome, $preco, Categoria $categoria)
    {
        $this-> nome = $nome;

        if($preco>0 )
            {
                $this -> preco = $preco;
            }
            else
            {
                $_SESSION["danger"] = "A operação não pode ser realizada! Preço informado é inválido! {$msg_erro}";
                header("Location: listar_produto.php");
                die();
            }

        $this -> categoria = $categoria;
    }

O form de cadastro de produto deixou de funcionar. Por isso:

$produto = new Produto("","",$categoria);

A solução que encontrei foi, no if do construtor, fazer:

if($preco>0 || $preco="")
            {
                $this -> preco = $preco;
            }

Achei muito feio, rs.. Seria essa mesmo a solução?

1 resposta

Oi Débora, tudo bom?

A gente também pode trocar o valor do preço em produto, e utilizar zero ao inves de uma string vazia:

$produto = new Produto("",0,$categoria);

Assim, sua verificação pode ser:

if($preco>=0)
            {
                $this -> preco = $preco;
            }

Assim não teremos problema com o form. E, já que o preço é um numero, ainda deixamos nosso código mais equivalente com a realidade. Afinal, um preço vazio deveria ser 0 ao invés de uma string vazia, certo? =)

Abraço e bons estudos!