# PHP-MVC-Framework2 **Repository Path**: wfdaj/php-mvc-framework2 ## Basic Information - **Project Name**: PHP-MVC-Framework2 - **Description**: No description available - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-05 - **Last Updated**: 2026-05-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Modelo MVC Genérico em PHP Um micro-framework MVC moderno, leve e modular, construído com PHP puro. Projetado para servir como um _template base_ ágil para iniciar novos projetos, oferecendo recursos de segurança e arquitetura vistos em frameworks robustos (como Laravel), porém mantendo a simplicidade. ## Recursos Integrados - **Arquitetura Modular:** Separação limpa de responsabilidades (ex: `app/Site`, `app/Auth`). - **Roteamento Dinâmico:** Suporte a métodos HTTP, rotas por arquivo e injeção de parâmetros de URL. - **Middlewares:** Proteja suas rotas e execute lógicas antes do Controller. - **Classe Request:** Abstração completa de globais (`$_POST`, `$_GET`, etc.). - **Proteção CSRF Nativa:** Formulários seguros por padrão via Middleware Global. - **Sessões e Flash Messages:** Gerenciamento elegante de feedback para o usuário. - **Herança de Views:** Sistema inteligente de layouts globais ou específicos de módulo. --- ## 📁 Estrutura de Diretórios ```text ├── app/ # Seus módulos (Ex: Site, Auth, Painel) │ ├── Auth/ │ │ ├── Controllers/ │ │ ├── Middlewares/ │ │ ├── Models/ │ │ └── Views/ │ ├── Shared/ # Arquivos compartilhados (Layouts globais, Middlewares globais) │ └── Site/ ├── core/ # Núcleo do Framework (NÃO EDITAR) │ ├── Database/ # Acesso a Dados (Database.php, Model.php) │ ├── Http/ # Request, Router, Session, Middleware │ ├── Utils/ # Ferramentas auxiliares (Env, Funcoes, etc) │ ├── View/ # Motor de Renderização │ ├── Application.php # Inicializador Principal │ └── Controller.php # Classe Base dos Controllers ├── public/ # Ponto de entrada (Document Root) │ └── index.php └── routes/ # Arquivos de Rotas (*.php carregados automaticamente) ``` --- ## 🚀 Como Usar ### 1. Criando Rotas As rotas são definidas dentro de arquivos `.php` na pasta `/routes`. Todos os arquivos nessa pasta são carregados automaticamente. ```php // routes/site.php get('/', HomeController::class, 'index'); // Rota POST com parâmetros na URL (ex: /produto/15) $router->post('/produto/{id}', HomeController::class, 'atualizar'); // Rota Protegida por Middleware $router->get('/painel', HomeController::class, 'painel')->middleware(AuthMiddleware::class); ``` ### 2. Criando Controllers Todo controller deve herdar de `Core\Controller`. O objeto `Request` é injetado automaticamente nas funções para capturar dados. ```php namespace App\Site\Controllers; use Core\Controller; use Core\Http\Request; class HomeController extends Controller { public function index(Request $request) { // Resgatando dados (Substitui $_GET e $_POST) $termo = $request->get('busca'); $email = $request->post('email'); // Retornando uma View $this->render('Site', 'home/index', ['title' => 'Página Inicial']); } } ``` **Métodos úteis do Controller:** - `$this->render('Modulo', 'caminho/view', $dados)`: Renderiza tela html. - `$this->json($array)`: Retorna uma resposta JSON de API. - `$this->redirect('/url')`: Redireciona o usuário. - `$this->flash('chave', 'mensagem')`: Define uma notificação Flash temporária. ### 3. Criando Views e Layouts As views ficam em `app/Modulo/Views`. Por padrão, a função `$this->render()` sempre tenta injetar a view dentro do layout global localizado em `app/Shared/Views/layouts/default.php`. Para imprimir variáveis, use o PHP puro. E para proteger os seus formulários POST, sempre use a função injetada `$csrf_field()`: ```php