Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Magic Methods

Fiz conforme a aula e funcionou, porem ao tentar dar um new Produto sem os parametro de nome e preço informados na __construct, apenas para testar se iria dar algum erro. Porem funcionou.

No video informa que deveria dar um erro.

segue trechos do codigo.

Acredito que Não deveria funcionar class Produto { private $id; private $nome; private $preco; private $descricao; private $categoria; private $usado = false;

function __construct($nome, $preco) { $this->setNome($nome); $this->setPreco($preco); }

function listaProdutos($conexao) {

$produtos = array();

$resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id");

while($produto_atual = mysqli_fetch_assoc($resultado)) {

$categoria = new Categoria; $categoria->setNome($produto_atual['categoria_nome']); $produto = new Produto; $produto->setId($produto_atual['id']); $produto->setNome($produto_atual['nome']); $produto->setPreco($produto_atual['preco']); $produto->setDescricao($produto_atual['descricao']); $produto->setCategoria($categoria); $produto->setUsado($produto_atual['usado']); array_push($produtos, $produto); } return $produtos; }

1 resposta
solução!

Olá Douglas, caso você apenas execute new Produto(); todos os atributos vão ficar com os valores nulos e você vai ter que chamar todos os setters para botar algum valor e se você reparar no seu terminal deverá aparecer o seguinte warning:

PHP Warning:  Missing argument 1 for Produto::__construct()

E dependendo da configuração do servidor e versão do php no lugar de warning deve ocorrer um fatal error.

Espero ter ajudado, Abraços.

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