O que é MVC? — Conceitos Básicos

MVC é um padrão de arquitetura de software que separa a aplicação em três partes: Model, View e Controller.
Hoje em dia, o MVC é um dos padrões mais utilizados para o desenvolvimento de aplicações web em diversas linguagens de programação, incluindo o PHP.
Agora vamos entender melhor cada uma das partes do MVC.
Model
O Model é a parte da aplicação que representa a camada de dados, ou seja, a representação dos dados que são manipulados pela aplicação.
É literalmente um modelo da aplicação, que pode ser representado por uma classe, por exemplo.
Seguindo o exemplo de um sistema de cadastro de clientes, o Model seria a representação dos dados do cliente, como nome, e-mail, telefone etc.
Segue o exemplo de um Model de cliente em Laravel:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Cliente extends Model
{
use HasFactory;
protected $fillable = [
'nome',
'email',
'telefone',
];
}
Dentro do Model, podemos definir regras de negócio, como funções para validar os dados, por exemplo.
public function adicionar($dados) {
return $this->create($dados);
}
public function atualizar($dados) {
return $this->update($dados);
}
public function excluir() {
return $this->delete();
}
public function buscar($id) {
return $this->find($id);
}
public function listar() {
return $this->all();
}
Lembre-se que esse código é apenas um exemplo didático, e que você pode implementar as regras de negócio da forma que achar melhor.
Controller
Pronto, já temos nosso modelo!
Como usamos ele agora? Com o Controller.
O Controller é literalmente o controlador da aplicação, que recebe as requisições do usuário e as manipula, retornando uma resposta.
No nosso exemplo, o Controller seria responsável por receber as requisições do usuário, como por exemplo: salvar um novo cliente, e manipular os dados, como por exemplo, salvar o cliente no banco de dados.
Segue o exemplo de um Controller de cliente em Laravel:
[...]
class ClienteController extends Controller
{
public function adicionar(Request $request) {
$cliente = new Cliente();
$cliente->adicionar($request->all());
return response()->json(['mensagem' => 'Cliente adicionado com sucesso!']);
}
public function atualizar(Request $request, $id) {
$cliente = Cliente::find($id);
$cliente->atualizar($request->all());
return response()->json(['mensagem' => 'Cliente atualizado com sucesso!']);
}
public function excluir($id) {
$cliente = Cliente::find($id);
$cliente->excluir();
return response()->json(['mensagem' => 'Cliente excluído com sucesso!']);
}
public function buscar($id) {
$cliente = Cliente::find($id);
return response()->json($cliente);
}
public function listar() {
$clientes = Cliente::listar();
return response()->json($clientes);
}
}
O Controller conhece o Model e pode manipular os dados através dele, mas também conhece a View e pode retornar uma resposta para o usuário através dela.
Dessa forma, o Controller é o intermediário entre o Model e a View.
View
A View é a parte da aplicação que representa a camada de apresentação, ou seja, a representação da interface gráfica da aplicação.
É literalmente a interface gráfica da aplicação, que pode ser representada por um arquivo HTML, por exemplo.
Seguindo o exemplo de um sistema de cadastro de clientes, a View seria a representação da interface gráfica do sistema como formulários, botões, tabelas etc.
Segue o exemplo de uma View de cliente em Laravel utilizando o Blade:
<!DOCTYPE html>
Clientes





