Clique aqui e veja todas as aulas
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
- Melhore a classe
Taskadicionando verificações e tratamentos de erros mais avançados. - 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.
