1001Ferramentas
🐘Geradores

Gerador MVC Skeleton (PHP)

Gera esqueleto MVC PHP minimalista (Controller, Model, View) a partir do nome de um recurso. Pronto para Laravel-like apps.


  

MVC em PHP: uma ideia de 45 anos que ainda entrega aplicações web

O padrão Model-View-Controller foi formalizado em 1979 pelo cientista da computação norueguês Trygve Reenskaug enquanto trabalhava no Smalltalk-76 no Xerox PARC. Quarenta e cinco anos depois ele continua sendo o padrão arquitetural dominante em frameworks web server-rendered porque a separação que ele impõe é genuinamente útil: Model encapsula dados e regras de negócio, View renderiza a saída para o usuário, Controller orquestra a entrada e escolhe qual view exibir. No ciclo de uma requisição PHP o front controller (tipicamente public/index.php) inicializa o framework, o roteador mapeia a URL para um método de controller, o controller pede dados ao model e retorna uma view; o framework converte a view em resposta HTTP.

Os frameworks PHP MVC chegaram em ondas. CakePHP (2005) e CodeIgniter (2006) trouxeram a ergonomia do Rails para o PHP 5. Symfony (2005) pavimentou padrões enterprise (injeção de dependência, event dispatcher) e ainda é o kernel sob Drupal e Laravel. Laravel, criado por Taylor Otwell em 2011, virou dominante combinando os componentes do Symfony com convenções amigáveis ao desenvolvedor e é a escolha de fato em projetos PHP novos em 2026.

Anatomia de um skeleton Laravel

app/
  Http/Controllers/UserController.php
  Models/User.php
  Services/UserService.php
resources/views/users/index.blade.php
routes/web.php
database/migrations/2026_01_01_create_users_table.php
config/database.php
public/index.php   # front controller
  • Routing em routes/web.php: Route::get('/users', [UserController::class, 'index']);
  • Eloquent ORM usa o padrão Active Record: User::where('active', 1)->orderBy('name')->paginate(20);
  • Blade templating com escape automático em chaves duplas: @foreach($users as $u) {{ $u->name }} @endforeach
  • Migrations como schema-as-code: php artisan make:migration create_users_table
  • Composer + PSR-4 autoloading mapeia App\Models\User para app/Models/User.php automaticamente.

Armadilhas comuns e a Service Layer

Os dois pecados recorrentes em PHP MVC são fat controllers — métodos de 200 linhas misturando validação, persistência, envio de e-mail e cobrança — e bugs de N+1 queries em Eloquent. Mitigue o primeiro extraindo lógica de negócio para classes Service dedicadas (app/Services/) e injetando-as no controller; a responsabilidade do controller vira parsear input → chamar service → renderizar view. Mitigue o segundo com eager loading: User::with('posts.comments')->get(); dispara duas queries extras em vez de N. Ferramentas como Laravel Telescope e Clockwork expõem os traces problemáticos em desenvolvimento.

PHP moderno: Octane, Livewire, Inertia

Adições recentes empurram o PHP para terreno antes reservado a Node e Go. O Laravel Octane roda o framework como worker persistente sobre Swoole ou RoadRunner, eliminando o bootstrap a cada request e entregando rotineiramente 5–10× mais requisições por segundo. Livewire (Caleb Porzio) e Inertia.js (Jonathan Reinink) oferecem alternativas a construir uma SPA separada: o Livewire mantém o estado no servidor e envia diffs de HTML por WebSocket; o Inertia entrega uma app Vue/React cujas props vêm direto dos controllers Laravel. Ambos permitem que um time MVC ofereça UX de SPA sem montar uma camada de API adicional.

Perguntas frequentes

Preciso mesmo de um framework? Não — PHP puro com um router (Slim, FastRoute) e um templating engine (Twig, Plates) implementa MVC perfeitamente. Um framework te poupa semanas escrevendo routing, ORM, validação, mailer, cache, filas e migrations do zero. Para qualquer projeto maior que um CRUD único, a economia anula a curva de aprendizado.

Laravel é overkill para um site pequeno? Se você realmente precisa só de três páginas, Slim ou Lumen (primo micro-framework do Laravel, arquivado em 2022 mas ainda muito usado) são mais leves. O Laravel em si roda bem em hardware modesto — sua pegada base é ~25 MB de RAM por request.

PHP é rápido o suficiente para produção? Sim. PHP 8.3 com OPcache e JIT serve a maioria da web (Wikipedia, landing do Slack, Etsy, boa parte do WordPress). Para cargas sensíveis a latência o Octane fecha o gap com Node/Go.

Como MVC se compara com HMVC, MVVM e Clean Architecture? HMVC aninha trios MVC como widgets (CodeIgniter HMVC, Kohana); MVVM (popular em WPF/Vue) troca o controller por um ViewModel com data-binding; Clean / Hexagonal Architecture empurra o model para classes de "domínio" em PHP puro com as preocupações do framework isoladas na borda. Os três mantêm o mesmo objetivo de separação — só fatiam de jeitos diferentes.

Ferramentas Relacionadas