Depois que fiz todos os encapsulamento não consigo listar os produto e nem adicionar. Aparece o seguinte erro; "Fatal error: Call to a member function getNome() on null in /opt/lampp/htdocs/www/loja/produto-lista.php on line 19"
produto_lista.php
<?php
require_once("cabecalho.php");
require_once("banco-produto.php");
require_once("logica-usuario.php");
?>
<?php
$produtos = listaProdutos($conexao);
?>
<table class="table table-striped table-bordered">
<?php
foreach($produtos as $produto) :
?>
<tr>
<td><?= $produto->getNome() ?></td>
<td><?= $produto->getPreco() ?></td>
<td><?= $produto->precoComDesconto() ?></td>
<td><?= substr($produto->getDescricao(), 0, 15) ?></td>
<td><?= $produto->getCategoria()->getNome() ?></td>
<td><a class="btn btn-primary" href="produto-altera-formulario.php?id=<?= $produto->getId() ?>">alterar</a>
<td>
<form action="remove-produto.php" method="post">
<input type="hidden" name="id" value="<?=$produto->getId()?>" />
<button class="btn btn-danger">remover</button>
</form>
</td>
</tr>
<?php
endforeach
?>
</table>
<?php require_once("rodape.php"); ?>
banco_produto.php
<?php
require_once("conecta.php");
require_once("class/Categoria.php");
require_once("class/Categoria.php");
require_once("class/Produto.php");
function listaProdutos($conexao){
$produtos = array();
$query = "select p.*, c.nome as categoria_nome from produtos as p join categorias
as c on p.categoria_id = c.id";
$resultado = mysqli_query($conexao, $query);
while($produto_array = mysqli_fetch_assoc($resultado)){
$categoria = new Categoria();
$categoria->setNome($produto_array['categoria_nome']);
$produto = new Produto();
$produto->setId($produto_array['id']);
$produto->setNome($produto_array['nome']);
$produto->setPreco($produto_array['preco']);
$produto->setDescricao($produto_array['descricao']);
$produto->setCategoria($categoria);
$produto->setUsado($produto_array['usado']);
array_push($produtos, $produto);
}
return $produtos;
}
function insereProduto($conexao, Produto $produto){
$query = "insert into produtos (nome, preco, descricao, categoria_id, usado) values ('{$produto->getNome()}', {$produto->getPreco()},
'{$produto->getDescricao()}', {$produto->getCategoria()->getid()}, {$produto->isUsado()})";
$resultadoDaInsercao = mysqli_query($conexao, $query);
return $resultadoDaInsercao;
}
function removeProduto($conexao, Produto $produto) {
$query = "delete from produtos where id = {$produto->getId()}";
return mysqli_query($conexao, $query);
}
function buscaProduto($conexao, Produto $produto) {
$query = "select * from produtos where id = {$produto->getId()}";
$produto_buscado = mysqli_query($conexao, $query);
$categoria = new Categoria();
$categoria->setNome($produto_buscado['categoria_nome']);
$produto = new Produto();
$produto->setId($produto_buscado['id']);
$produto->setNome($produto_buscado['nome']);
$produto->setPreco($produto_buscado['preco']);
$produto->setDescricao($produto_buscado['descricao']);
$produto->setCategoria($categoria);
$produto->setUsado($produto_buscado['usado']);
return $produto;
}
function alteraProduto($conexao, Produto $produto) {
$query = "update produtos set nome =('{$produto->getNome()}', {$produto->getPreco()},
'{$produto->getDescricao()}', {$produto->getCategoria()->getid()}, {$produto->isUsado()})
where id = '{$produto->getId()}'";
return mysqli_query($conexao, $query);
}
?>