MVC (Model-View-Controller, ou Modelo-Visão-Controlador) é um padrão de arquitetura que separa a aplicação em três camadas com responsabilidades distintas. Foi criado nos anos 1970 e é a base de muitos frameworks web.
As três camadas
| Camada | Responsabilidade |
|---|---|
| Model (modelo) | Dados e regras de negócio: acesso ao banco, validações, cálculos. |
| View (visão) | Apresentação: HTML, templates, tudo o que o usuário vê. |
| Controller (controlador) | Recebe a requisição, chama o modelo e escolhe a visão a exibir. |
Fluxo de uma requisição
- O usuário acessa uma URL, como
/produtos/10. - O controlador recebe a requisição.
- Pede ao modelo os dados do produto 10.
- Envia os dados à visão, que gera o HTML.
- A resposta volta ao usuário.
Exemplo simplificado em PHP
// Model
class Produto {
public static function buscar(PDO $pdo, int $id): ?array {
$st = $pdo->prepare('SELECT * FROM produtos WHERE id = ?');
$st->execute([$id]);
return $st->fetch(PDO::FETCH_ASSOC) ?: null;
}
}
// Controller
class ProdutoController {
public function ver(PDO $pdo, int $id) {
$produto = Produto::buscar($pdo, $id);
require 'views/produto.php'; // View
}
}
A view (views/produto.php) apenas exibe $produto, sem consultar o banco.
Vantagens
- Código organizado e fácil de manter.
- Equipes trabalham em paralelo (front e back).
- Reuso: o mesmo modelo serve a várias telas.
- Facilita testes, pois a regra de negócio fica isolada.
Cuidados
- Evite "controladores gordos": regras de negócio devem ficar no modelo ou em serviços.
- A view não deve conter lógica complexa.
Frameworks que usam MVC
Laravel, CodeIgniter e Symfony (PHP), Django (Python, no estilo MVT), Spring MVC (Java), ASP.NET MVC (C#) e Ruby on Rails.
