elxdigital / gerador
Ferramentas CLI para projetos PHP institucionais
Requires
- php: >=8.1
- ext-dom: *
- ext-libxml: *
- ext-pdo: *
- vlucas/phpdotenv: ^5.6
README
Este pacote é um conjunto de comandos CLI em PHP para acelerar a criação de estruturas de banco de dados e cadastros a partir de arquivos .php
com campos HTML dinâmicos (data-field-name
).
Ele é ideal para projetos institucionais estruturados em PHP + MVC.
📦 Instalação
Adicione ao seu projeto via Composer:
composer require elxdigital/gerador
⚙️ Requisitos
- PHP >= 8.1
CONF_VIEW_THEME
definido no seu projeto (em constante ou.env
)- Diretório de views:
themes/{CONF_VIEW_THEME}/
- Arquivos
.php
contendo tags comdata-field-name
🛠️ Comandos disponíveis
🔹 map:views
Mapeia os arquivos .php
em themes/{CONF_VIEW_THEME}/
, ignorando error.php
e _theme.php
.
🔹 read:fields
Lê os arquivos .php
mapeados e identifica as tags HTML com data-field-name
.
Gera:
storage/tags_mapeadas.txt
→ log técnico dos camposstorage/tabelas.sql
→ instruçõesCREATE TABLE
storage/inserts.sql
→ instruçõesINSERT
🧩 Tipos reconhecidos (data-field-type
)
HTML / data-field-type | Tipo SQL gerado |
---|---|
textarea , mce |
TEXT DEFAULT NULL |
text , varchar |
VARCHAR(255) DEFAULT NULL |
int |
INT(11) UNSIGNED DEFAULT NULL |
date |
DATE DEFAULT NULL |
timestamp |
TIMESTAMP NULL DEFAULT NULL |
foreign |
INT(11) UNSIGNED DEFAULT NULL + FOREIGN KEY (requer data-table-ref ) |
🔹 create:model
Gera o arquivo Model
em source/Models/
baseado nos campos detectados, com docblocks e construtor padrão.
A classe gerada se chama PaginaNomeDaPagina
e a tabela pagina_nome_da_pagina
.
🔹 create:controller
Gera o Controller
com os métodos:
nomepagina()
→ renderiza a viewsave(array $data)
→ salva o registro únicoactive(array $data)
→ ativa ou desativa o registro
A classe gerada se chama PaginaNomeDaPagina
e vai para source/App/Admin/
.
🔹 create:view
Gera a view padrão (themes/admin/widgets/{menu}/{funcao}/{funcao}.php
) contendo os campos dinâmicos.
Cada campo usa o tipo correto de input
, textarea
, mce
, etc.
🔹 create:routes
Gera o bloco de rotas em storage/rotas.php
para ser copiado para o index.php
:
// exemplo $route->get('/contato/contato/contato', 'PaginaContato:contato'); $route->post('/contato/contato/save', 'PaginaContato:save'); $route->post('/contato/contato/active', 'PaginaContato:active');
🔹 db:apply
Aplica os arquivos storage/tabelas.sql
e storage/inserts.sql
no banco de dados atual.
Configure via .env
:
CONF_DB_HOST=localhost CONF_DB_NAME=seubanco CONF_DB_USER=root CONF_DB_PASS=
🔹 generate:all
Executa os seguintes comandos em sequência:
map:views
read:fields
create:model
create:controller
create:view
create:routes
db:apply
✅ Estrutura esperada
project-root/
│
├── themes/
│ └── {CONF_VIEW_THEME}/
│ ├── home.php
│ ├── contato.php
│ └── ...
│
├── storage/
│ ├── teste.txt
│ ├── tabelas.sql
│ ├── inserts.sql
│ └── rotas.php
│
├── source/
│ ├── Models/
│ └── App/Admin/
│
└── composer.json