felipe-code / mvc-base
A simple PHP MVC skeleton for learning and reuse.
Requires
- php: >=8.5.0
- firebase/php-jwt: ^7.0
- lcobucci/jwt: ^5.6
- phpmailer/phpmailer: ^7.0
- predis/predis: ^3.4
- symfony/mercure: ^0.7.2
- vlucas/phpdotenv: ^5.6
- dev-main
- 4.4.0
- 4.3.4
- 4.3.3
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.6
- 4.2.5
- 4.2.4
- 4.2.3
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.0
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.5.1
- 3.5.0
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.5
- 3.3.4
- 3.3.3
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.0
- 2.6.0
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.1
- 2.3.0
- 2.2.0
- v2.1.0
- v2.0.1
- v2.0.0
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2026-03-19 04:14:15 UTC
README
Um esqueleto PHP puro, robusto e focado em performance (Stateless). Construído do zero para suportar a Arquitetura Moderna do PHP: Container de Injeção de Dependências (PSR-11 feeling), Cycle de Request/Response via Middlewares (PSR-15 feeling), Service Providers e preparado para servidores assíncronos como o FrankenPHP.
Principais Features Atuais
- Arquitetura Stateless: Sem vazamentos globais (Globals como
$_GETe$_POSTsão embalados no objetoRequest). - Container de Injeção de Dependências (IoC): Autowiring de classes inteligentes via Reflection API. Funções Globais como
app()elogger(). - Sessões e Proteção CSRF Nativa: Gerenciamento de sessão Orientado a Objetos integrado ao pipeline (Middlewares) e proteção fácil de formulários contra ataques Cross-Site Request Forgery.
- Router Expressivo e Rápido: Suporte a parâmetros dinâmicos na URL, Grupos de Rotas e agora com suporte total a PHP 8 Attributes (
#[Get],#[Post]) diretamente nos Controllers para maior produtividade. - Eventos em Tempo Real (Mercure): Integração nativa com o hub Mercure para broadcasting de eventos instantâneos. Use o helper
broadcast()no PHP e receba atualizações automáticas no front-end via HTMX ou JavaScript puro. - Docker & FrankenPHP Integrado: Ambiente pronto para a nuvem. Utiliza a imagem oficial do FrankenPHP com suporte nativo ao Mercure Hub (embutido no Caddy) e operando com o Worker Mode para performance extrema na casa dos milissegundos.
- Service Providers Lifecycle: Motor flexível similar ao Laravel, permitindo construção modular de recursos através de classes simples no
config/app.php. - Database Avançado (ORM): Modelos trazem um
QueryBuilderembutido para queries complexas fluidas, Suporte a Relacionamentos (belongsTo,hasMany), e Gatilhos de Mutação e Validação acoplados. - Upload Seguro e Storage: Abstração Orientada a Objetos robusta para manipulação e validação de
UploadedFile. - Segurança e Log de Falhas: Exceções são silenciadas no arquivo
storage/logs/app.logse o modo de debug estiver inativo (APP_DEBUG=false), blindando a visão do usuário final num Deploy de Produção. - Suporte Nativo ao HTMX: Métodos utilitários nativos de Request e Response (
isHtmx(),hxTrigger()), além de motor PHP capaz de isolar renderização de componentes parciais (pular Layout Mestre). - API & JWT Suporte Nativa: Ferramentas para construir APIs Stateless protegidas por JSON Web Tokens. Comando
setup:apipara scaffold rápido. - Sistema de E-mails Robusto: Abstração de e-mails via PHPMailer com suporte a SMTP e drivers configuráveis.
- Filas e Processamento Assíncrono (Queues): Adie tarefas pesadas para background com drivers de Banco de Dados ou Redis.
- Cache Inteligente: Drivers de Arquivo e Redis para armazenamento temporário e alta performance.
- Início Rápido com Docker: Ambiente com Redis e MariaDB pré-configurados no
docker-compose.yml. - CLI (Forge): Uma ferramenta de console robusta para criar código, rodar migrações e processar filas.
Documentação
Para mergulhar fundo e aprender a separar a lógica da sua aplicação de forma profissional num MVC, construir modelos, usar o Validator baseado em PHP 8 Attributes e a CLI do Framework, consulte a documentação dedicada na pasta docs/:
=> Ler a Documentação do Motor MVC
Início Rápido (Instalação e Teste)
Método 1: Via Composer (Recomendado)
A forma mais fácil de criar a aplicação é rodar o create-project. Ele baixará a última versão, iniciará o instalador interativo e limpará os arquivos de instalação ao finalizar.
composer create-project felipe-code/mvc-base nome-do-seu-projeto
Método 2: Via Git Clone Manual
Se preferir clonar o repositório, você pode engatilhar o instalador interativo logo em seguida com os comandos abaixo:
git clone https://github.com/FelipeOropeza/mvc-estrutura.git meu-app
cd meu-app
composer install
composer run post-create-project-cmd
Método 3: Via Docker (Alta Performance com FrankenPHP)
O projeto já conta com o poderoso ambiente Docker pré-configurado. Se você possui o Docker instalado e quer máxima performance, basta levantar os containers, e ele montará automaticamente o PHP8 com o Worker Mode:
docker-compose up -d --build
Acesse http://localhost:8000 no seu navegador. O Servidor FrankenPHP gerenciará nativamente a aplicação!
Iniciando o Servidor Local Seguro (Modo Tradicional via PHP CLI):
Se não for usar o Docker, uma vez que o projeto esteja instanciado, inicie o servidor interno:
composer start
(O script start inicia o servidor embutido do PHP apontando para a pasta /public, garantindo a segurança dos arquivos internos).
Acesse http://localhost:8000 no seu navegador.
Comandos Rápidos da CLI (Forge):
php forge make:controller NomeController php forge make:controller Api/UsuarioController --api php forge make:model TabelaModel php forge make:view secao/nova-view php forge make:component nome_componente php forge make:migration CreateUsersTable php forge make:middleware VerificarAcessoMiddleware php forge make:rule CpfValido php forge make:mutator LimpaCpf php forge migrate php forge setup:auth php forge setup:api php forge setup:aviso php forge queue:work
Exemplos Reais
- Avisos em Tempo Real: Guia prático para testar o sistema de notificações instantâneas com HTMX e Mercure.
Licença
MIT