eril/db-tbl
Composer 安装命令:
composer require eril/db-tbl
包简介
PHP CLI tool to generate type-safe table schema classes from your database.
关键字:
README 文档
README
db-tbl gera automaticamente classes PHP a partir do schema da base de dados, criando constantes para tabelas, colunas, enums e foreign keys. Facilita o desenvolvimento com referência direta e type-safe à base de dados.
✨ Características
- Geração automática de classes PHP a partir do schema
- Modos de saída:
file(um arquivo) oupsr4(uma classe por tabela) - Suporte MySQL, PostgreSQL e SQLite
- Alias automáticos para tabelas
- CLI simples para gerar, sincronizar e verificar schema
- Compatível com PSR-4 e autoload moderno
📦 Instalação
composer require eril/db-tbl
⚙️ Configuração
Na primeira execução, um arquivo dbtbl.yaml será criado:
database: driver: mysql # mysql | pgsql | sqlite host: env(DB_HOST) port: env(DB_PORT) name: env(DB_NAME) user: env(DB_USER) password: env(DB_PASS) output: mode: file # file | psr4 path: "./" namespace: "" # obrigatório no modo psr4 naming: strategy: full # full | short abbreviation: max_length: 15 dictionary_lang: en
Nota:
namespaceé obrigatório apenas no modopsr4.
🛠️ Uso via CLI
# Gerar classes no modo padrão (file) php vendor/bin/db-tbl # Gerar em modo PSR-4 php vendor/bin/db-tbl --psr4 # Verificar mudanças no schema php vendor/bin/db-tbl --check
📁 Estrutura de saída
Modo file (padrão)
Gera um único arquivo Tbl.php:
final class Tbl { public const users = 'users'; public const as_users = 'users u'; } /** `table: users` (alias: `u`) */ final class TblUsers { public const __table = 'users'; public const __alias = 'users u'; public const id = 'id'; public const name = 'name'; public const status = 'status'; public const enum_status_active = 'active'; public const enum_status_inactive = 'inactive'; /** references `roles` → `id` */ public const fk_roles = 'role_id'; }
Modo psr4
Gera múltiplos arquivos:
src/Database/
├── Tbl.php
├── TblUsers.php
├── TblRoles.php
└── TblProducts.php
🔌 Integração com Composer
{
"autoload": {
"psr-4": { "App\\Database\\": "src/Database/" },
"files": [ "src/Database/Tbl.php" ]
}
}
composer dump-autoload
No código:
use App\Database\Tbl; use App\Database\TblUsers; echo Tbl::users; // 'users' echo TblUsers::id; // 'id' echo TblUsers::enum_status_active; // 'active'
💻 Exemplo de query usando constantes
$sql = sprintf( "SELECT u.%s, r.%s FROM %s u JOIN %s r ON u.%s = r.%s WHERE u.%s = ?", TblUsers::name, TblRoles::name, Tbl::as_users, Tbl::as_roles, TblUsers::fk_roles, TblRoles::id, TblUsers::status );
🚨 Limitações e cuidados
- Arquivos gerados não devem ser editados manualmente
output.namespaceé obrigatório no modo PSR-4- Diretório de saída precisa de permissão de escrita
- Classes existentes serão sobrescritas
- Hash do schema é baseado na estrutura, não nos dados
🌐 Conexão customizada
database: connection: 'App\\Database\\Connection::getPdo'
O método deve retornar uma instância de PDO.
🧩 Abreviações e nomenclatura
naming: strategy: short abbreviation: max_length: 15 dictionary_lang: pt
Exemplo de dicionário customizado (PHP):
return = [ "users": "usr", "products": "prod" ];
🤝 Contribuição
- Fork e clone
- Crie branch:
git checkout -b minha-feature - Commit:
git commit -am 'Add feature' - Push e PR
📄 Licença
MIT License. Veja LICENSE.
eril/db-tbl 适用场景与选型建议
eril/db-tbl 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 01 月 09 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「database」 「mysql」 「schema」 「sqlite」 「pdo」 「pgsql」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 eril/db-tbl 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 eril/db-tbl 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 eril/db-tbl 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Dibi is Database Abstraction Library for PHP
Store your language lines in the database, yaml or other sources
Extension for Opis JSON Schema
A package for automatically encrypting and decrypting Eloquent attributes in Laravel 5.5+, based on configuration settings.
EAV modeling package for Eloquent and Laravel.
serialize Symfony Forms into JSON schema
统计信息
- 总下载量: 4
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 28
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-01-09