Artigo
Tutorial de Implementação do MVC (Model-View-Controller)Tutorial de Implementação do MVC (Model-View-Controller)
Fabrício de Medeiros
Introdução ao MVC
O padrão Model-View-Controller (MVC) é amplamente utilizado para organizar o código em aplicações web e desktop, separando as responsabilidades em três componentes principais: Model, View e Controller. Isso facilita a manutenção, a escalabilidade e o desenvolvimento colaborativo. Vamos explorar um exemplo prático de implementação de MVC em uma aplicação simples, como um sistema de gerenciamento de tarefas.
Estrutura do Projeto
Primeiro, organize seu projeto em diretórios correspondentes ao padrão MVC:
App ├── public │ ├── index.php ├── src │ ├── Model │ │ └── Task.php │ ├── View │ │ ├── TaskView.php │ ├── Controller │ │ └── TaskController.php │ ├── services │ │ └── Service.php │ └── config │ └── database.php ├── vendor │ ├── composer │ │ └── (arquivos e pastas relacionados ao Composer) │ └── autoload.php ├── composer.json └── README.md
1. Configuração do Banco de Dados
No arquivo config/database.php
, configure a conexão com o Banco de Dados:
<?php
class Database {
private $host = "localhost";
private $db_name = "task_manager";
private $username = "root";
private $password = "";
public $conn;
public function getConnection() {
$this->conn = null;
try {
$this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
$this->conn->exec("set names utf8");
} catch (PDOException $exception) {
echo "Connection error: " . $exception->getMessage();
}
return $this->conn;
}
}
2. Model
No arquivo Model/Task.php
, crie a classe do modelo para gerenciar as tarefas:
<?php
class Task {
private $conn;
private $table_name = "tasks";
public $id;
public $title;
public $description;
public $created_at;
public function __construct($db) {
$this->conn = $db;
}
public function create() {
$query = "INSERT INTO " . $this->table_name . " SET title=:title, description=:description, created_at=:created_at";
$stmt = $this->conn->prepare($query);
$this->title = htmlspecialchars(strip_tags($this->title));
$this->description = htmlspecialchars(strip_tags($this->description));
$this->created_at = htmlspecialchars(strip_tags($this->created_at));
$stmt->bindParam(":title", $this->title);
$stmt->bindParam(":description", $this->description);
$stmt->bindParam(":created_at", $this->created_at);
if ($stmt->execute()) {
return true;
}
return false;
}
public function readAll() {
$query = "SELECT * FROM " . $this->table_name . " ORDER BY created_at DESC";
$stmt = $this->conn->prepare($query);
$stmt->execute();
return $stmt;
}
}
3. Controller
No arquivo Controller/TaskController.php
, crie a lógica para processar as requisições:
<?php
include_once '../config/database.php';
include_once '../Model/Task.php';
class TaskController {
private $task;
public function __construct() {
$database = new Database();
$db = $database->getConnection();
$this->task = new Task($db);
}
public function createTask($title, $description) {
$this->task->title = $title;
$this->task->description = $description;
$this->task->created_at = date('Y-m-d H:i:s');
return $this->task->create();
}
public function listTasks() {
return $this->task->readAll();
}
}
4. View
No arquivo View/TaskView.php
, crie a interface de usuário para listar e adicionar tarefas:
<?php
include_once '../Controller/TaskController.php';
class TaskView {
private $controller;
public function __construct() {
$this->controller = new TaskController();
}
public function displayTasks() {
$tasks = $this->controller->listTasks();
echo "<h1>Task List</h1>";
echo "<ul>";
while ($row = $tasks->fetch(PDO::FETCH_ASSOC)) {
extract($row);
echo "<li>{$title} - {$description} (Created at: {$created_at})</li>";
}
echo "</ul>";
}
public function addTaskForm() {
echo '<form method="post" action="index.php">
<input type="text" name="title" placeholder="Title" required>
<textarea name="description" placeholder="Description" required></textarea>
<button type="submit" name="submit">Add Task</button>
</form>';
}
}
5. Arquivo de Entrada (index.php
)
No arquivo public/index.php
, gerencie a lógica da interface e controle a entrada do usuário:
<?php
include_once '../View/TaskView.php';
$view = new TaskView();
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['submit'])) {
$title = $_POST['title'];
$description = $_POST['description'];
if ($view->controller->createTask($title, $description)) {
echo "Task created successfully!";
} else {
echo "Unable to create task.";
}
}
$view->addTaskForm();
$view->displayTasks();
Executando o Projeto
- Certifique-se de que o servidor web está configurado para apontar para o diretório
public/
. - Acesse o aplicativo no navegador. Você deve ser capaz de adicionar novas tarefas e ver a lista de tarefas existentes.
Explore, Contribua e Cresça Conosco!
Obrigado por ler o nosso artigo! Esperamos que você tenha encontrado informações valiosas e inspiradoras. Se você está empolgado para saber mais, temos uma vasta coleção de artigos sobre tópicos variados, desde tendências tecnológicas até insights sobre desenvolvimento de software. Não deixe de explorar nossas outras publicações!
Quer fazer parte da nossa comunidade?
Inscreva-se no nosso site para receber as últimas atualizações e novidades diretamente no seu e-mail. Seu cadastro é o primeiro passo para se conectar com uma rede de entusiastas e profissionais apaixonados pelo que fazem.
Tem algo a compartilhar?
Adoraríamos ouvir suas ideias, inovações e experiências! Sinta-se à vontade para escrever e enviar seus próprios artigos, códigos ou projetos. Sua contribuição é fundamental para enriquecer nosso conteúdo e ajudar outros leitores a crescer junto com você. Juntos, podemos criar um espaço de aprendizado e troca de conhecimento enriquecedor. Seu conhecimento e entusiasmo são o que fazem nossa comunidade especial.
Inscreva-se Agora | Compartilhe | Contribua com um Artigo
Continue explorando e seja parte da transformação!