https://github.com/erilshackle/php-tbl-class
Generate PHP constants for database tables, columns, and foreign keys from your schema. Improves IDE autocomplete, reduces SQL typos, and enables safe refactoring.
https://github.com/erilshackle/php-tbl-class
auto-generation ci-cd cli composer constants database db-consistency-checker db-constants development-tools generator ide-autocomplete mysql orm-alternative php php-library schema sqlite type-safety
Last synced: 5 months ago
JSON representation
Generate PHP constants for database tables, columns, and foreign keys from your schema. Improves IDE autocomplete, reduces SQL typos, and enables safe refactoring.
- Host: GitHub
- URL: https://github.com/erilshackle/php-tbl-class
- Owner: erilshackle
- License: mit
- Created: 2025-12-16T21:58:16.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-01-08T22:42:20.000Z (5 months ago)
- Last Synced: 2026-01-11T12:37:59.166Z (5 months ago)
- Topics: auto-generation, ci-cd, cli, composer, constants, database, db-consistency-checker, db-constants, development-tools, generator, ide-autocomplete, mysql, orm-alternative, php, php-library, schema, sqlite, type-safety
- Language: PHP
- Homepage: https://packagist.org/packages/eril/tbl-class
- Size: 200 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Tbl::class
### Type-safe database schema constants para PHP
[](https://packagist.org/packages/eril/tbl-class) [](https://packagist.org/packages/eril/tbl-class) [](https://packagist.org/packages/eril/tbl-class) [](https://packagist.org/packages/eril/tbl-class) [](https://github.com/erilshackle/php-tbl-class)
---
## O que é o tbl-class?
**TBL-CLASS** é uma ferramenta **CLI para PHP** que gera **classes com constantes type-safe** directamente a partir do **esquema do seu banco de dados**.
Permite referenciar **tabelas, colunas, foreign keys e valores enum** sem recorrer a strings mágicas, tornando o código:
* mais seguro
* mais legível
* mais fácil de manter
* resistente a alterações de schema
> Ideal para projectos PHP modernos, APIs, frameworks customizados e ambientes CI/CD.
---
## ✨ Funcionalidades Principais
* Geração automática de constantes PHP a partir do schema
* Constantes **type-safe e centralizadas**
* Detecção de alterações no esquema via **hash**
* Compatível com **MySQL, PostgreSQL e SQLite**
* Classes organizadas: `Tbl`, `TblFk`, `TblEnum`
* Interface CLI simples e previsível
* Integração nativa com Composer
---
## 📌 Convenção Importante
> **Todas as constantes geradas são em lowercase**, por definição.
Exemplo:
```php
Tbl::users
Tbl::users_id
TblFk::posts_users
TblEnum::users_status_active
```
Isto garante:
* consistência entre bases de dados
* compatibilidade cross-platform
* previsibilidade em SQL dinâmico
---
## 📦 Instalação
```bash
composer require erilshackle/php-tbl-class --dev
```
Recomendado como dependência de desenvolvimento.
---
## 🚀 Utilização Rápida
### 1. Criar configuração inicial
```bash
php vendor/bin/tbl-class
```
Gera o ficheiro `tblclass.yaml`.
---
### 2. Configurar ligação à base de dados
```yaml
database:
driver: mysql
host: env(DB_HOST)
name: env(DB_NAME)
user: env(DB_USER)
password: env(DB_PASS)
```
---
### 3. Gerar classes PHP
```bash
php vendor/bin/tbl-class
```
É gerado o ficheiro `Tbl.php` contendo:
* `Tbl` → tabelas, colunas e aliases
* `TblFk` → foreign keys
* `TblEnum` → valores enum
---
### 4. Verificar alterações no esquema
```bash
php vendor/bin/tbl-class --check
```
---
## 📁 Exemplo de Código Gerado
```php
### `alias`
```php
Tbl::u // users
Tbl::u_id // users_id
TblFk::u_p // users_posts
```
---
## 🔍 Detecção de Alterações de Schema
Cada geração inclui metadados:
```php
/**
* @schema-hash md5:abc123...
* @generated 2026-01-08 18:42:00
*/
```
Se o hash mudar, o schema foi alterado.
---
## 🏗️ Integração com Composer
### Sem namespace
```json
{
"autoload": {
"files": ["Tbl.php"]
}
}
```
### Com namespace
```json
{
"autoload": {
"psr-4": {
"App\\Database\\": "src/Database/"
}
}
}
```
```bash
composer dump-autoload
```
---
## 📝 Exemplo de Utilização
```php
$sql = "
SELECT *
FROM " . Tbl::users . "
WHERE " . Tbl::users_id . " = ?
";
$status = TblEnum::users_status_active;
$fk = TblFk::posts_users;
$alias = Tbl::as_users;
```
---
## 🐛 Resolução de Problemas
**Nenhuma tabela encontrada**
* Verifique a base de dados configurada
* Confirme que existem tabelas
**Erro de ligação**
* Credenciais incorrectas no `tblclass.yaml`
* Serviço da base de dados inactivo
**Schema alterado**
* Reexecutar `tbl-class`
---
## 📄 Licença
MIT License — Eril TS Carvalho
---
## 🤝 Contribuições
Issues e pull requests são bem-vindos.
Sugestões técnicas são apreciadas.
---
tbl::class — constantes type-safe para esquemas de base de dados em PHP.