profmugomes / miphantdb
Biblioteca para trabalhar com Banco de Dados MySQL/MariaDB.
Requires
None
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
MiPhantDB é uma biblioteca leve, fluente e orientada a código escrita em PHP para abstração de banco de dados MySQL/MariaDB, focada em simplicidade, controle explícito das queries e baixo overhead.
Oferece uma API encadeável (fluent interface) para construção de SQL legível, previsível e flexível, mantendo o desenvolvedor no controle total da query final.
Ideal para projetos que precisam de produtividade, performance, CLIs, APIs, sistemas legados e ambientes com pouco recurso.
✨ Características
- Abstração leve sobre MySQLi
- API fluente (encadeável)
- Suporte a SELECT, INSERT, UPDATE, DELETE
- Suporte a prepared statements
- Construção dinâmica de
WHERE,ORDER BYeLIMIT - Criação e alteração de tabelas via código
- Suporte a
INNER JOIN - Zero dependências externas
- Compatível com PHP 8.4 ou superior
📦 Instalação
Via Composer (recomendado)
composer require profmugomes/miphantdb
Manual
Copie os arquivos da pasta MiPhantDB para o seu projeto e utilize o require_once para adicionar as classes como database, select, insert, update, delete, table.
🔌 Conexão com o banco
use MiPhantDB\database; $db = new database([ 'server' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'meubanco' ], true); // true ativa o modo sandbox (logs em tela)
📖 SELECT
use MiPhantDB\select; $select = new select([ 'server' => 'localhost', 'username' => 'root', 'password' => '', 'database' => 'meubanco' ]); $select->table('users') ->column('id') ->column('name') ->where('status', 'ativo') ->orderby('name') ->limit(0, 10) ->select(); while ($row = $select->fetch()) { echo $row['name']; } $select->close();
🔐 Prepared Statements
$select->table('users') ->where('id', '?')->prepared(1, 'i') ->select(); $select->getResult(); $row = $select->fetch();
➕ INSERT
use MiPhantDB\insert; $insert = new insert($dbConfig); $insert->table('users') ->add('name', '?') ->add('email', '?') ->prepared('Exemplo', 's') ->prepared('exemplo@email.com', 's') ->insert(); $id = $insert->idinsert();
✏️ UPDATE
use MiPhantDB\update; $update = new update($dbConfig); $update ->table('users') ->add('email', '?') ->where('id', '?') ->prepared('novo@email.com', 's') ->prepared(1, 'i') ->update();
❌ DELETE
use MiPhantDB\delete; $delete = new delete($dbConfig); $delete->table('users') ->where('id', 1) ->delete();
🧱 Criação de tabelas
use MiPhantDB\table; $table = new table($dbConfig); $table->table('users') ->int()->autoIncrement()->primaryKey()->add('id') ->varcharSize(100)->add('name') ->varcharSize(150)->add('email') ->engine('InnoDB') ->create();
🔧 Alterar tabela
$table ->table('users') ->varcharSize(255)->add('bio') ->alter(table::ALTER_ADD);
🔍 Verificar se coluna existe
if (!$table->columnExists('email')) { // criar coluna }
🔒 Encerrando a conexão (close)
Após executar as operações no banco de dados, é recomendável encerrar explicitamente a conexão para liberar recursos de memória e resultados pendentes.
$select->close();
O que o close() faz?
- Libera automaticamente o result set (
mysqli_free_result) quando aplicável - Finaliza corretamente prepared statements
- Encerra a conexão ativa com o banco (
mysqli_close) - Evita vazamento de memória em scripts longos ou CLIs
Quando usar?
- Após finalizar uma consulta
CREATE,ALTER,SELECT,INSERT,UPDATEouDELETE - Em scripts CLI, workers e processos de longa duração
- Em loops ou execuções repetidas de queries
Exemplo completo
$select->table('users') ->where('status', 'ativo') ->select(); while ($row = $select->fetch()) { echo $row['name']; } $select->close();
💡 Dica: Embora o PHP feche conexões automaticamente ao final do script, o uso explícito de
close()é uma boa prática para garantir desempenho e previsibilidade.
🧠 Outras Informações
- Sem ORM pesado
- Sem reflexão ou proxies mágicos
- SQL continua sendo SQL
- Código previsível e fácil de depurar
- Ideal para quem gosta de controle
👤 Autor
Murilo Gomes
🔗 https://www.profmugomes.com.br
📺 https://youtube.com/@profmugomes
🤝 Support
- GitHub Sponsors: https://github.com/sponsors/profmugomes
License
Copyright (c) 2025-2026 Murilo Gomes <profmugomes.com.br>. All Rights Reserved.
This project is licensed under the PolyForm Perimeter License 1.0.1.
Summary
This software is available for commercial and noncommercial use, subject to the terms of the PolyForm Perimeter License 1.0.1.
You may:
- ✔ Use the software for commercial and noncommercial purposes.
- ✔ Inspect and study the source code.
- ✔ Modify the software.
- ✔ Create derivative works based on the software.
- ✔ Redistribute the software and permitted modifications.
You may not:
- ✖ Provide a product that competes with the software.
See the full license terms at LICENSE.md.
This summary is provided for convenience only and does not replace or modify the full license terms.