eril/db-tbl
最新稳定版本:v1.0.0
Composer 安装命令:
composer require eril/db-tbl
包简介
CLI tool that generates PHP table schema classes from your database. Provides structured access to tables, columns, foreign keys, and enums with schema change detection.
关键字:
README 文档
README
db-tbl é uma biblioteca PHP para gerar classes baseadas no schema do banco de dados, incluindo:
- Constantes globais para tabelas (
Tbl) - Classes de tabela (
TblNomeDaTabela) com colunas, enums e foreign keys - Suporte a MySQL, PostgreSQL e SQLite
- Gerenciamento automático de aliases e abreviações de nomes
- CLI para gerar e sincronizar classes (
db-tbl)
Tudo isso sem precisar escrever manualmente código de mapeamento, útil para projetos que precisam de referência constante ao banco em PHP.
Instalação
Instale via Composer:
composer require eril/db-tbl
Configuração
O arquivo principal de configuração é dbtbl.yaml, gerado automaticamente na primeira execução:
# Autoload a file include: null database: driver: mysql # mysql, pgsql, sqlite host: env(DB_HOST) # ou localhost port: env(DB_PORT) # 3306 name: env(DB_NAME) user: env(DB_USER) password: env(DB_PASS) output: path: "./" # diretório de saída namespace: "" # namespace opcional naming: strategy: "full" abbreviation: dictionary_lang: "en" dictionary_path: null max_length: 15
- driver: banco de dados a ser lido
- output.path: onde os arquivos PHP gerados serão salvos
- naming.strategy: estratégia de nomes para constantes (
fulloushort)
CLI
Gerar classes
php vendor/bin/db-tbl
Isso irá gerar os arquivos no diretório configurado (output.path).
Checar mudanças no schema e regenerar (--check)
php vendor/bin/db-tbl --check
- Compara o hash do schema atual com o último gerado
- Se houver mudanças, recria os arquivos
⚠ O check é feito com base no arquivo gerado então evite mover e arquivo gerado ou alterar-lo depois de ser gerado.
Especificar diretório de saída
php vendor/bin/db-tbl ./src/Database
- Substitui o path do
output.pathdo YAML temporariamente
Comandos
php vendor/bin/db-tbl --help
Estrutura de arquivos gerados
-
Tbl.php→ classe globalTblcom todas as tabelas como constantes -
TblNomeDaTabela.php→ classe de cada tabela com:- Colunas como constantes
- ENUMs como constantes
- Foreign keys comentadas
Exemplo:
class Tbl { public const users = 'users'; public const roles = 'roles'; public const as_users = 'users u'; public const as_roles = 'roles r'; } class TblUser { public const id = 'id'; public const name = 'name'; public const email = 'email'; public const enum_status = 'active'; /* FK → `roles`.`id` */ public const fk_roles = 'role_id'; public const _TABLE = 'users'; public const _ALIAS = 'usr'; }
Integração com Composer
Adicione o arquivo gerado ao autoload:
"autoload": { "files": [ "includes/Tbl.php" ] }
Depois, rode:
composer dump-autoload
Agora você pode usar as constantes globalmente:
echo Tbl::users; // users echo TblUsers::name; // name
Integração no projeto
require 'vendor/autoload.php'; use Eril\DbTbl\Generators\TblClassesGenerator; use Eril\DbTbl\Config; use Eril\DbTbl\Resolvers\ConnectionResolver; $config = new Config(); $pdo = ConnectionResolver::fromConfig($config); $generator = new TblClassesGenerator($schemaReader, $config); $generator->run();
Compatibilidade
-
PHP 8.1+
-
Banco de dados suportados:
- MySQL / MariaDB
- PostgreSQL
- SQLite
Dicionários e abreviações
- Nomes de tabelas e colunas podem ser abreviados automaticamente
- Pode usar dicionário customizado via
output.naming.abbreviation.dictionary_path - Suporta linguagens:
en,ptouall
Contribuição
- Clone o repositório
- Rode
composer install - Faça suas alterações e testes
- Crie PR para revisão
Licença
MIT License.
统计信息
- 总下载量: 2
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-09