Search by

profmugomes / miphantdb

profmugomes

Biblioteca para trabalhar com Banco de Dados MySQL/MariaDB.

Package info

github.com/profmugomes/miphantdb

pkg:composer/profmugomes/miphantdb

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

5.0.0 2026-09-27 03:19 UTC

This package is auto-updated.

Last update: 2026-09-27 20:08:55 UTC


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 BY e LIMIT
  • 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, UPDATE ou DELETE
  • 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

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.