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.
- 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 - Modo sandbox para debug
- Zero dependências externas
- Compatível com PHP 8.4 ou superior
composer require bluiceoficial/miphantdbCopie os arquivos da pasta MiPhantDB para o seu projeto e utilize o include_once para adicionar as classes como database, select, insert, update, delete, table.
use MiPhantDB\database;
$db = new database([
'server' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'meubanco'
], true); // true ativa o modo sandbox (logs em tela)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();$select->table('users')
->where('id', '?')->prepared(1, 'i')
->select();
$select->getResult();
$row = $select->fetch();use MiPhantDB\insert;
$insert = new insert($dbConfig);
$insert->table('users')
->add('name', '?')
->add('email', '?')
->prepared('Murilo', 's')
->prepared('murilo@email.com', 's')
->insert();
$id = $insert->idinsert();use MiPhantDB\update;
$update = new update($dbConfig);
$update
->table('users')
->add('email', '?')
->where('id', '?')
->prepared('novo@email.com', 's')
->prepared(1, 'i')
->update();use MiPhantDB\delete;
$delete = new delete($dbConfig);
$delete->table('users')
->where('id', 1)
->delete();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();$table
->table('users')
->varcharSize(255)->add('bio')
->alter(table::ALTER_ADD);if (!$table->columnExists('email')) {
// criar coluna
}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();- 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
- 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
$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.
- 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
Murilo Gomes Julio
📺 https://youtube.com/@bluiceoficial
- GitHub Sponsors: https://github.com/sponsors/bluiceoficial
- Apoie o projeto: https://www.bluice.com.br/apoie/
The MiPhantDB is provided under:
SPDX-License-Identifier: LGPL-2.1-only
Beign under the terms of the GNU Lesser General Public License version 2.1 only.
All contributions to the MiPhantDB are subject to this license.