Aula 11: Criando a Classe Task para Gerenciar as Tarefas

Por: Nerd Toolkit Postado em: Outubro 21, 2024 Visto por: 406

1. Estrutura da Classe Task

A classe Task será responsável por lidar diretamente com as tarefas no banco de dados. Ela incluirá métodos para criar, ler, atualizar e deletar tarefas.


2. Estrutura Básica da Classe Task

Vamos criar a estrutura básica da classe Task. O código a seguir demonstra como essa classe será organizada.

Passo 1: Criando o Arquivo Task.php

No diretório classes, crie um arquivo chamado Task.php com o seguinte código:

<?php
class Task {
   private $conn;
   private $table_name = "tasks";
   public $id;
   public $name;
   public $description;
   public $status;
   // Construtor que recebe a conexão ao banco de dados
   public function __construct($db) {
       $this->conn = $db;
   }
   // Função para criar uma nova tarefa (Create)
   public function create() {
       $query = "INSERT INTO " . $this->table_name . " (name, description, status) VALUES (?, ?, ?)";
       $stmt = $this->conn->prepare($query);
       $stmt->bind_param("sss", $this->name, $this->description, $this->status);
       if ($stmt->execute()) {
           return true;
       }
       return false;
   }
   // Função para obter todas as tarefas (Read)
   public function read() {
       $query = "SELECT id, name, description, status FROM " . $this->table_name;
       $stmt = $this->conn->prepare($query);
       $stmt->execute();
       return $stmt->get_result();
   }
   // Função para obter uma tarefa específica pelo ID (Read)
   public function readOne() {
       $query = "SELECT id, name, description, status FROM " . $this->table_name . " WHERE id = ? LIMIT 0,1";
       $stmt = $this->conn->prepare($query);
       $stmt->bind_param("i", $this->id);
       $stmt->execute();
       $result = $stmt->get_result();
       $task = $result->fetch_assoc();
       $this->name = $task['name'];
       $this->description = $task['description'];
       $this->status = $task['status'];
   }
   // Função para atualizar uma tarefa (Update)
   public function update() {
       $query = "UPDATE " . $this->table_name . " SET name = ?, description = ?, status = ? WHERE id = ?";
       $stmt = $this->conn->prepare($query);
       $stmt->bind_param("sssi", $this->name, $this->description, $this->status, $this->id);
       if ($stmt->execute()) {
           return true;
       }
       return false;
   }
   // Função para deletar uma tarefa (Delete)
   public function delete() {
       $query = "DELETE FROM " . $this->table_name . " WHERE id = ?";
       $stmt = $this->conn->prepare($query);
       $stmt->bind_param("i", $this->id);
       if ($stmt->execute()) {
           return true;
       }
       return false;
   }
}

3. Explicação do Código

  • Propriedades:
    • $conn: A conexão com o banco de dados.
    • $table_name: O nome da tabela no banco de dados (neste caso, tasks).
    • $id, $name, $description, $status: Atributos que descrevem uma tarefa.
  • Métodos CRUD:
    • create(): Insere uma nova tarefa no banco de dados.
    • read(): Lê todas as tarefas do banco de dados.
    • readOne(): Lê uma tarefa específica pelo ID.
    • update(): Atualiza os dados de uma tarefa existente.
    • delete(): Exclui uma tarefa do banco de dados.

4. Integrando a Classe Task no Projeto

Agora que criamos a classe Task, vamos integrá-la ao nosso projeto para gerenciar as tarefas.

Passo 2: Atualizando o Arquivo tasks.php

No arquivo tasks.php, vamos utilizar a classe Task para lidar com a criação, leitura, atualização e exclusão de tarefas.

<?php
require_once 'classes/Database.php';
require_once 'classes/Task.php';
$database = new Database();
$db = $database->getConnection();
$task = new Task($db);
// Processando criação de nova tarefa
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['create'])) {
   $task->name = $_POST['name'];
   $task->description = $_POST['description'];
   $task->status = $_POST['status'];
   if ($task->create()) {
       echo "Tarefa criada com sucesso!";
   } else {
       echo "Erro ao criar tarefa.";
   }
}
// Obtendo todas as tarefas
$tarefas = $task->read();
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Gerenciador de Tarefas</title>
   <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
   <div class="container mt-5">
       <h2>Gerenciador de Tarefas</h2>
       <!-- Formulário para criar nova tarefa -->
       <form method="post">
           <div class="form-group">
               <label for="name">Nome da Tarefa</label>
               <input type="text" name="name" class="form-control" required>
           </div>
           <div class="form-group">
               <label for="description">Descrição</label>
               <textarea name="description" class="form-control" required></textarea>
           </div>
           <div class="form-group">
               <label for="status">Status</label>
               <input type="text" name="status" class="form-control" required>
           </div>
           <button type="submit" name="create" class="btn btn-primary">Criar Tarefa</button>
       </form>
       <!-- Exibindo todas as tarefas -->
       <h3 class="mt-5">Lista de Tarefas</h3>
       <ul class="list-group">
           <?php while ($row = $tarefas->fetch_assoc()): ?>
               <li class="list-group-item">
                   <strong><?php echo $row['name']; ?></strong><br>
                   <?php echo $row['description']; ?><br>
                   <em>Status: <?php echo $row['status']; ?></em>
               </li>
           <?php endwhile; ?>
       </ul>
   </div>
</body>
</html>

5. Exercício Prático

  1. Melhore a classe Task adicionando verificações e tratamentos de erros mais avançados.
  2. Teste a funcionalidade CRUD completa no arquivo tasks.php, incluindo a criação, leitura, atualização e exclusão de tarefas.

6. Próximos Passos

Agora que temos a classe Task criada e integrada ao nosso projeto, na próxima aula vamos implementar as funcionalidades de atualização e deleção diretamente pela interface do usuário, oferecendo uma maneira mais prática de gerenciar tarefas.

Tags:
#classe Task PHP  # CRUD PHP  # gerenciar tarefas PHP  # MySQL CRUD  # PHP OOP  # criar tarefa PHP  # atualizar tarefa PHP  # deletar tarefa PHP. 

Notícias Relacionadas

Aula 11: Criando a Classe Task para Gerenciar as Tarefas
  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