Aula 11: Backend do Módulo de Produtos – Implementação da Classe Produto e do Controlador

Por: Nerd Toolkit Postado em: Abril 15, 2025 Visto por: 351

Nesta aula, daremos continuidade ao desenvolvimento do módulo de produtos, focando na implementação da parte backend. Iremos criar a classe Produto para gerenciar as operações de inserção (e futuramente, listagem, atualização e exclusão) e desenvolver o controlador produtoController.php que receberá os dados do formulário (implementado na Aula 10) e fará a comunicação com o banco de dados.

 


1. Criação da Classe Produto

A classe Produto ficará na pasta Classes e será responsável por todas as operações relacionadas aos produtos. Inicialmente, iremos implementar o método de cadastro (inserção) dos produtos.

1.1. Código da Classe Produto

Crie o arquivo Produto.php na pasta Classes com o seguinte conteúdo:

 
<?php // Classes/Produto.php

class Produto {
    // Conexão com o banco de dados
    private $conn;
    // Nome da tabela de produtos
    private $table_name = "produtos";

    // Construtor para receber a conexão
    public function __construct($db) {
        $this->conn = $db;
    }

    /**
     * Método para cadastrar um novo produto.
     *
     * @param string $nome Nome do produto.
     * @param string $descricao Descrição detalhada.
     * @param float  $preco Preço do produto.
     * @param int    $quantidade Quantidade em estoque.
     * @return bool Retorna true se o cadastro for realizado com sucesso, ou false em caso de falha.
     */
    public function cadastrar($nome, $descricao, $preco, $quantidade) {
        // Prepara a query para inserção
        $query = "INSERT INTO " . $this->table_name . " (nome, descricao, preco, quantidade, data_cadastro) 
                  VALUES (:nome, :descricao, :preco, :quantidade, NOW())";
        $stmt = $this->conn->prepare($query);

        // Vincula os parâmetros usando bindParam para evitar SQL Injection
        $stmt->bindParam(':nome', $nome);
        $stmt->bindParam(':descricao', $descricao);
        $stmt->bindParam(':preco', $preco);
        $stmt->bindParam(':quantidade', $quantidade);

        // Executa a query e retorna true em caso de sucesso ou false se ocorrer algum erro
        if($stmt->execute()) {
            return true;
        }
        return false;
    }

    // Futuramente, métodos para listar, atualizar e excluir produtos podem ser adicionados.
}
?> 

Explicação:

  • Conexão e Tabela: A classe utiliza uma conexão recebida pelo construtor e define a tabela produtos do banco de dados.

  • Cadastro com Prepared Statement: O método cadastrar utiliza prepared statements para prevenir SQL Injection e insere os dados na tabela, registrando a data automaticamente com NOW().


2. Criação do Controlador de Produtos

O controlador produtoController.php ficará na pasta Controllers e será responsável por receber os dados do formulário de cadastro (da Aula 10) e utilizar a classe Produto para inserir as informações no banco de dados.

2.1. Código do Controlador

Crie o arquivo produtoController.php na pasta Controllers com o seguinte conteúdo:

 
<?php // Controllers/produtoController.php 
session_start();  // Inicia a sessão para armazenar mensagens de feedback

// Inclui a classe para conexão e a classe Produto 
require_once '../Classes/Database.php';
require_once '../Classes/Produto.php';

// Verifica se o método de requisição é POST 
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Recebe e trata os dados enviados pelo formulário
    $nome = trim($_POST['nome']);
    $descricao = trim($_POST['descricao']);
    $preco = trim($_POST['preco']);
    $quantidade = trim($_POST['quantidade']);

    // Validação simples: checa se todos os campos foram preenchidos
    if (!empty($nome) && !empty($descricao) && !empty($preco) && !empty($quantidade)) {
        // Cria uma instância da conexão com o banco de dados
        $database = new Database();
        $db = $database->getConnection();

        // Instancia a classe Produto
        $produto = new Produto($db);

        // Tenta cadastrar o produto
        if ($produto->cadastrar($nome, $descricao, $preco, $quantidade)) {
            $_SESSION['msg'] = "Produto cadastrado com sucesso!";
            // Redireciona para a view de listagem de produtos (ajuste o caminho conforme sua estrutura)
            header("Location: ../Views/produto_listagem.php");
            exit();
        } else {
            $_SESSION['msg'] = "Erro ao cadastrar produto!";
            // Redireciona de volta para o formulário de cadastro
            header("Location: ../Views/produto_cadastro.php");
            exit();
        }
    } else {
        $_SESSION['msg'] = "Preencha todos os campos!";
        header("Location: ../Views/produto_cadastro.php");
        exit();
    }
} else {
    // Caso a requisição não seja POST, exibe uma mensagem
    echo "Método inválido.";
}
?> 

Explicação:

  • Sessão para Feedback: A sessão é iniciada para armazenar mensagens que serão exibidas ao usuário após as operações (como sucesso ou erro).

  • Validação: O código verifica se todos os campos obrigatórios foram enviados.

  • Processamento: Se a validação for bem-sucedida, o controlador cria a conexão com o banco e instancia a classe Produto para cadastrar o novo produto.

  • Redirecionamento: Dependendo do resultado da operação, o usuário é redirecionado para a página de listagem ou para o formulário de cadastro novamente, com uma mensagem de feedback armazenada na sessão.


 

3. Conclusão da Aula

Nesta aula, implementamos o backend do módulo de produtos:

  • A Classe Produto: Responsável por gerenciar a inserção dos produtos no banco de dados.

  • O Controlador produtoController.php: Responsável por receber os dados do formulário, validar as informações, utilizar a classe Produto para executar a operação e, por fim, redirecionar o usuário com uma mensagem de feedback.

Na próxima aula, avançaremos para a criação das views de listagem, edição e exclusão de produtos, completando o ciclo CRUD deste novo módulo.

Tags:
#backend produtos  # classe Produto  # produtoController  # CRUD produtos  # PHP OOP  # MySQL  # dashboard  # SEO 

Notícias Relacionadas

Aula 11: Backend do Módulo de Produtos – Implementação da Classe Produto e do Controlador
  Contato
  • support@nerdtoolkit.com.br
Mapa do Site
Mostrar mapa do site
  Sobre

Feito de programadores para programadores.

Este site utiliza cookies. Ao continuar a utilizar este site, você concorda com a nossa utilização de cookies e política de privacidade.
Leia mais Concordo