定制 eril/db-tbl 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

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

eril/db-tbl

Composer 安装命令:

composer require eril/db-tbl

包简介

PHP CLI tool to generate type-safe table schema classes from your database.

README 文档

README

PHP Version License Version

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) ou psr4 (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 modo psr4.

🛠️ 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

  1. Fork e clone
  2. Crie branch: git checkout -b minha-feature
  3. Commit: git commit -am 'Add feature'
  4. 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 我们能提供哪些服务?
定制开发 / 二次开发

基于 eril/db-tbl 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

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

GitHub 信息

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

其他信息

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