Tive que ensinar MVC para os estagiários e isso me fez querer te ensinar (caso você precise programar em PHP e não saiba MVC)
Entrar num trampo novo
A empresa chega e joga na sua costa um estágiario que programava bem mas nunca trabalhou num projeto real e outro que mal sabe programar e só trabalhou com laravel e ainda por cima num contexto antes da IA em um sistema de dezenas de módulos, códigos legados misturados no meio de códigos, e os estágiarios conseguiam entender os módulos de 50 mil linha de arquivos em um módulo só, mas não conseguiam entender os módulos onde o projeto era organizado com MVC.
Nivelamento
Tente pegar o básico primeiro, inúmeras playlists do youtube me ensinaram POO, pesquise sobre a famosa Orientação a Objeto, pratique, crie classes e faça o código rodar.
Na Teoria
O objetivo do MVC é dividir em responsabilidades sendo elas:
Rotas (Routes)
São o ponto de entrada da aplicação.
Quando o usuário acessa uma URL (ex: /login ou /users), a rota decide qual controller deve cuidar desse pedido.
👉 Pense nela como o mapa que guia cada requisição pro lugar certo.
🎮 Controller
É o intermediário entre o usuário e o sistema.
Ele recebe a requisição das rotas, conversa com o Model pra buscar ou alterar dados, e escolhe qual View deve ser mostrada.
👉 É o garçom do sistema: entende o pedido e entrega o resultado.
🥘 Model
É onde ficam as regras de negócio e acesso aos dados (ex: banco de dados, cálculos, validações).
O Controller não precisa saber como o dado é buscado — ele só pede, e o Model resolve.
👉 É a cozinha, onde o trabalho pesado acontece.
🍽️ View
É o que o usuário vê na tela — HTML, JSON, Blade, etc.
Ela só mostra o resultado, sem se preocupar com regras ou banco de dados.
👉 É o prato bonito que chega na mesa.
flowchart LR
A[Usuário] -->|Faz requisição| B[Routes]
B -->|Direciona a rota certa| C[Controller]
C -->|Pede ou atualiza dados| D[Model]
D -->|Retorna dados| C
C -->|Atualiza a tela| E[View]
E -->|Mostra resultado| A
style A fill:#f2f2f2,stroke:#333,stroke-width:2px
style B fill:#e2d5f9,stroke:#333,stroke-width:2px
style C fill:#cce5ff,stroke:#333,stroke-width:2px
style D fill:#d4edda,stroke:#333,stroke-width:2px
style E fill:#fff3cd,stroke:#333,stroke-width:2px
Na Prática
Na hora nosso projeto fica bem parecido com a estrutura de pastas do Laravel hoje, sim, Laravel usa MVC.
/ (raiz)
├── index.php
├── .htaccess
├── composer.json
├── app/
│ ├── Controllers/
│ │ └── ExemploController.php
│ ├── Models/
│ │ └── ExemploModel.php
│ ├── Routes/
│ │ └── web.php
│ └── Views/
│ ├── layouts/
│ │ └── main.php
│ └── exemplo/
│ └── index.php
└── resources/
└── views/ ← (ou se você separar assets, templates, etc)
Botando a mão da massa
Depois de cerca de quatro anos daquele episódio na empresa, sinto que evoluí bastante em PHP — o suficiente para começar a ensinar uma coisa ou outra pra quem está dando os primeiros passos na linguagem.
Estou montando um projeto-base para iniciar um canal ou compartilhar conteúdo, explicando as coisas de uma forma absurdamente simples, do jeito que eu sempre quis aprender, mas nunca encontrei.
Essa ideia vem também de uma certa agonia com a estagnação, aquela sensação de estar parado e precisar criar algo novo pra se desafiar de novo.
Então é isso — o repositório do projeto está aqui
Até a próxima postagem! 🚀
Att:
Amorim do futuro projeto pixpeixe! 🐟💵