Search by

lcloss / php-mvc-skeleton

lcloss

Framework PHP simples, sem dependências pesadas, para páginas e pequenos sites. Skeleton para `composer create-project`.

Package info

github.com/lcloss/php-mvc-skeleton

Type:project

pkg:composer/lcloss/php-mvc-skeleton

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.1.0 2026-09-02 20:00 UTC

This package is auto-updated.

Last update: 2026-09-03 00:17:37 UTC


README

Framework PHP simples e leve — sem dependências pesadas — para páginas e pequenos sites (landing pages, formulários, painéis simples). Extraído e generalizado a partir do projeto desempenho-mais-2.

Inclui:

  • Router com suporte a parâmetros de rota (/posts/{id}) e middlewares.
  • Blade, um motor de templates próprio (subset do Laravel Blade: @extends, @section, @yield, @include, @if/@else, @foreach, {{ }} / {!! !!}, @csrf).
  • Database, wrapper PDO com suporte a SQLite, MySQL e PostgreSQL, e um mini sistema de migrações (migrate.php, ficheiros em app/migrations).
  • Model base com create/find/all/update/delete.
  • Request, CSRF, Env (.env sem dependências externas) e Mail (via PHPMailer).
  • Testes com Pest.

Usar como template para um novo projeto

composer create-project lcloss/php-mvc-skeleton meu-novo-projeto
cd meu-novo-projeto
php -S localhost:8000 -t public

O composer create-project corre automaticamente bin/setup.php, que cria o .env a partir do .env.example e gera um AGENTS.md com as convenções da framework (ver secção abaixo).

Desenvolvimento local (a partir deste repositório)

composer install
cp .env.example .env
php migrate.php
php -S localhost:8000 -t public
composer test

Estrutura

app/
  App.php                 # bootstrap da aplicação
  controllers/            # controllers (namespace app\controllers)
  controllers/middlewares/
  models/                 # models (namespace app\models)
  migrations/             # uma migração por ficheiro, com SQL por driver
config/
  app.php, database.php, routes.php
lib/                      # núcleo da framework (sem namespace, carregado pelo Autoloader)
public/
  index.php               # front controller
  .htaccess
views/                    # templates .blade.php
storage/logs/
tests/

Rotas

Definidas em config/routes.php:

[
    'method' => 'GET',
    'path' => '/posts/{id}',
    'handler' => 'app\controllers\PostController@show',
    'middlewares' => ['auth'],
],

Suporte para agentes de IA

Todo novo projeto criado via composer create-project já sai com um AGENTS.md na raiz (gerado por bin/setup.php a partir de docs/ai-guidelines/AGENTS.md.stub), documentando as convenções da framework e como evitar assumir recursos que ela não tem (Eloquent, Artisan, Blade completo, etc.).

Além disso, bin/ai-context.php faz introspecção ao vivo do projeto — útil para um agente confirmar rotas e schema reais em vez de adivinhar:

php bin/ai-context.php routes          # rotas registadas em config/routes.php
php bin/ai-context.php schema          # tabelas/colunas do banco atual
php bin/ai-context.php info            # versão do PHP, driver de BD, middlewares, etc.
php bin/ai-context.php all --json      # tudo junto, em JSON

Esta framework não inclui um servidor MCP — um agente como o Claude Code já consegue correr comandos de shell, e bin/ai-context.php --json cobre o mesmo caso de uso sem exigir um processo persistente nem dependências novas.

Publicar no Packagist

  1. Ajusta name em composer.json (vendor/pacote).
  2. Faz push para o GitHub e submete o repositório em packagist.org.
  3. Ativa o webhook do GitHub para atualizações automáticas.

Licença

MIT.