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

Porque preciso criar novo objeto produto?

Nesse exercício criamos o objeto produto no arquivo "adiciona-produto.php" pelo método $produto = new Produto(); Mas porque preciso usar esse mesmo método no arquivo "altera-produto.php", nesse caso o produto já existe. É uma pergunta boba mas não consegui entender essa parte. Não entendi também porque quando crio a função preciso passar a classe produto antes do meu objeto produto. Como neste caso:

 function insereProduto($conexao, Produto $produto) {
    $query = "insert into produtos (nome, preco, descricao, categoria_id, usado) 
        values ('{$produto->nome}', {$produto->preco}, '{$produto->descricao}', 
            {$produto->categoria_id}, {$produto->usado})";
    return mysqli_query($conexao, $query);
}
1 resposta
solução!

Ola Raoni, são boas dúvidas.

Sobre a primeira pergunta, você precisa sempre se lembrar de que há duas coisas: objetos em memória do PHP e linhas do banco de dados SQL. quando você faz new Produto() não quer dizer que um novo produto foi inserido no banco de dados, apenas na memória do PHP com o objetivo de fazer algo com ele. Talvez você nem vá "gravar" aqui no BD. Nesse caso do atualiza, nós damos new para poder popular o objeto e passar para o método que, esse sim, trata do banco de dados.

Já a declaração Produto $produto no parâmetro do método não quer dizer que você está passando a classe, quer dizer apenas que a variável $produto tem de se referenciar obrigatoriamente a um objeto da classe Produto. Para os nomes não te confundirem, pense que voce poderia ter recebido Produto $coisaQueFoiComprada. O nome da variável não precisa ser o mesmo que o da classe, ter o mesmo nome é apenas um padrão comum quando se cria variáveis temporárias/parâmetros.

Esse primeiro momento com tipagem, orientação a objetos e mundo relacional/objetos é realmente muita informação e essas dúvidas são normais.