Search by

iscos / voodoo-2026

iscosta77

Voodoo 2026 — micro-ORM fluente, multi-banco (MySQL/SQLite/PostgreSQL) e multilíngue (pt/en/es), sem dependencias. Herdeiro do VoodOrm e do TORM.

Package info

github.com/iscosta77/voodoo-2026

pkg:composer/iscos/voodoo-2026

Statistics

Installs: 10

Dependents: 4

Suggesters: 0

Stars: 0

v1.0.1 2026-08-25 21:48 UTC

This package is auto-updated.

Last update: 2026-10-24 16:38:13 UTC


README

"Uma ferramenta simples, para pessoas que só querem entregar."

Voodoo 2026 é um micro-ORM fluente para PHP moderno, sem nenhuma dependência além do PDO. Multi-banco (MySQL, SQLite e PostgreSQL) e multilíngue (pt, en, es), ele segue o formato do Laravel: você configura o driver e os dados no .env — e o Voodoo faz o resto.

Herdeiro de duas ferramentas que marcaram época no desenvolvimento web brasileiro, ele nasceu para quem precisa de um CRUD rápido e honesto em aplicações pequenas — onde um framework completo seria canhão para matar formiga.

$db = Voodoo::fromEnv(); // lê DB_CONNECTION, DB_HOST, DB_DATABASE... do .env

$db->table('pessoas')
   ->where('cidade', 'Goiânia')
   ->where('idade', '>=', 18)
   ->orderBy('nome')
   ->limit(50)
   ->find();

O valor histórico: de onde viemos

VoodOrm — Mardix (2012–2014, MIT)

"A simple micro-ORM that stays out of your way."

Criado por Mardix e publicado no Packagist como voodoophp/voodorm, o VoodOrm foi um dos primeiros micro-ORMs PHP a popularizar a consulta fluente por tabela: $db->table('users')->where(...)->find() — sem classes, sem geração de código, sem cerimônia. Em uma época em que "usar ORM" parecia exigir um framework inteiro, ele provou que dava para fazer CRUD com elegância usando só PDO e boas intenções. Foi a porta de entrada de muitos desenvolvedores — incluindo o autor deste pacote — para o mundo dos mappers relacionais.

TORM — Eustáquio Rangel (2014–2018, GPL)

"Just another simple ORM for PHP."

Desenvolvido pelo brasileiro Eustáquio Rangel (taq), o TORM levou o Active Record a outro nível com validações declarativas, associações (hasMany, hasOne, belongsTo), callbacks, scopes, dirty tracking e suporte a múltiplos drivers (MySQL, PostgreSQL, SQLite, Oracle) — tudo em PHP 5.5, com uma documentação que serviu de escola para uma geração. O TORM provou que um ORM pequeno podia ser completo sem perder a alma. Hoje é abandonware oficial — mas sua importância histórica é inegável.

O renascimento

Em 2026, com o PHP 8.4 e 8.5 consolidados e duas décadas de estrada, o Hermes Agent (Nous Research) — o assistente de IA que vive no terminal — criou este pacote de ponta a ponta: arquitetura, código, testes e documentação. Ildefonso Costa, que usou VoodOrm e TORM em projetos reais antes de migrar para o Laravel, é o parceiro do legado: deu o nome, o GitHub e a inspiração inicial — e quer que o reconhecimento pelo código seja de quem o escreveu.

O Voodoo 2026 não tenta competir com o Eloquent. Ele existe para o momento em que você precisa de uma tabela, um filtro, um loop — e nada mais. Para quem está aprendendo, ele é pequeno o suficiente para ser lido inteiro em uma tarde. E por seguir o formato do Laravel (.env, nomes de variáveis, semântica), quem começa no Voodoo migra para o Laravel sem susto — e vice-versa.

Agradecimentos

Este pacote não existiria sem:

  • Mardix, pelo VoodOrm — a simplicidade fluente que inspirou a API do Voodoo 2026. Na sua época, foi um farol: mostrou que ORM podia ser leve, direto e sem mistério.
  • Eustáquio Rangel (taq), pelo TORM — a referência de design para validações, associações e o cuidado com quem aprende. Um dos grandes professores silenciosos do PHP brasileiro.

A ambos, o nosso respeito e gratidão. Ferramentas como as suas constroem carreiras.

Requisitos

  • PHP ^8.2 (testado até 8.5)
  • Extensão pdo + o driver do seu banco (pdo_mysql, pdo_sqlite, pdo_pgsql)

Instalação

composer require iscos/voodoo-2026

Configuração (.env)

Copie o .env.example e ajuste — formato Laravel:

DB_CONNECTION=mysql        # mysql | sqlite | pgsql
DB_HOST=127.0.0.1
DB_PORT=3306               # 3306 (mysql) | 5432 (pgsql)
DB_DATABASE=app            # sqlite: caminho do arquivo (ex: database.sqlite)
DB_USERNAME=root
DB_PASSWORD=
APP_LANG=pt                # pt | en | es (idioma das mensagens)
use Iscos\Voodoo\Voodoo;

$db = Voodoo::fromEnv(); // lê o .env da pasta (ou as variáveis de ambiente)

Teste de configuração (voodoo-check)

Cheque antes de começar a dar erro misterioso:

php vendor/bin/voodoo-check
Voodoo 2026 — verificacao de configuracao
=========================================
 ✅ Driver: mysql
 ✅ Servidor: no ar (127.0.0.1:3306)
 ✅ Banco de dados 'app': conectado
 ❌ Tabela 'clientes': nao existe (confira o nome ou crie a tabela)

Suporta --env=/caminho/.env, --lang=en|es e --table=nome.

Uso rápido

use Iscos\Voodoo\Voodoo;

$db = Voodoo::open('mysql:host=localhost;dbname=app', 'root', ''); // ou Voodoo::fromEnv()

// Inserir
$id = $db->table('pessoas')->insert(['nome' => 'Bruna Oliveira', 'cidade' => 'Goiânia']);

// Consultar (fluente)
$pessoas = $db->table('pessoas')->where('cidade', 'Goiânia')->orderBy('nome')->find();

// Um registro
$pessoa = $db->table('pessoas')->findById($id);

// Active Record
$pessoa->idade = 26;
$pessoa->save();

// Atualizar em lote
$db->table('pessoas')->where('cidade', 'Aparecida')->update(['cidade' => 'Goiânia']);

// Apagar (sem where é bloqueado — segurança)
$db->table('pessoas')->where('id', 42)->delete();

// Agregados
$total = $db->table('pessoas')->count();
$media = $db->table('pessoas')->avg('idade');

// Transações
$db->beginTransaction();
$db->table('pessoas')->insert($nova);
$db->commit();

Recursos

  • Multi-banco: MySQL, SQLite, PostgreSQL (formato Laravel, só muda o .env)
  • Multilíngue: mensagens em pt, en, es (APP_LANG)
  • Consulta fluente: where, andWhere, orWhere, orderBy, limit, offset
  • Operadores: =, >, >=, <, <=, LIKE, IN, IS NULL
  • Active Record: find(), findOne(), findById(), save(), delete()
  • Agregados: count, sum, avg, min, max
  • Transações, log de queries e voodoo-check (teste de configuração)
  • Zero dependências — só PDO

Roadmap

  • v1.0 — CRUD fluente + Active Record + agregados + multi-banco + voodoo-check
  • v1.1 — validações declarativas (inspiradas no TORM)
  • v2.0 — associações hasMany / belongsTo

Licença

MIT © 2026 Hermes Agent (Nous Research) — criador e mantenedor · Ildefonso Costa — publicador