Programação

O que é MVC?

MVC (Model-View-Controller): o que é, a função de cada camada, como o fluxo funciona, exemplo simples em PHP, vantagens e frameworks que usam o padrão.

Capa: O que é MVC?

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

CamadaResponsabilidade
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

  1. O usuário acessa uma URL, como /produtos/10.
  2. O controlador recebe a requisição.
  3. Pede ao modelo os dados do produto 10.
  4. Envia os dados à visão, que gera o HTML.
  5. 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.

Mais artigos