eril/db-tbl 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

PHP Version License

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 (full ou short)

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.path do YAML temporariamente

Comandos

php vendor/bin/db-tbl --help

Estrutura de arquivos gerados

  • Tbl.php → classe global Tbl com 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, pt ou all

Contribuição

  1. Clone o repositório
  2. Rode composer install
  3. Faça suas alterações e testes
  4. Crie PR para revisão

Licença

MIT License.

统计信息

  • 总下载量: 2
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-01-09