承接 bluice/blumiga 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

bluice/blumiga

Composer 安装命令:

composer create-project bluice/blumiga

包简介

Blumiga é um framework PHP leve e de alta performance, projetado para o desenvolvimento rápido, limpo e seguro de aplicações web.

README 文档

README

PHP Version License

[!NOTE] Status do Projeto: Em desenvolvimento ativo. Atualmente implementando recursos.

O Blumiga é um framework PHP ultra-leve, veloz e seguro, estruturado sob o paradigma MVC (Model-View-Controller) adaptado para funções modernas isoladas por Namespaces. Desenvolvido para entregar máxima performance e controle absoluto sobre o fluxo da aplicação, o ecossistema elimina o overhead de ferramentas inchadas ao integrar um sistema de rotas dinâmicas, um Query Builder nativo especialista (MySQLi) e um Mecanismo de Cache em Disco de alta velocidade.

🛠️ Requisitos do Sistema

Certifique-se de que seu ambiente atende aos requisitos mínimos para garantir a estabilidade do núcleo:

  • PHP: Versão 8.4 ou superior (com suporte a Union Types, tipos estritos e funções CSPRNG).
  • Servidor Web: Apache (mod_rewrite ativo).
  • Banco de Dados: MySQL 5.7+ ou MariaDB 10.3+.
  • Composer: Para gerenciamento do autoload estrutural do framework.

Extensões PHP Obrigatórias (php.ini)

  • mysqli: Conector oficial e motor por trás de todas as operações e Prepared Statements seguros.
  • intl: Mecanismo de internacionalização nativo para moedas, datas e formatação localizada.
  • iconv: Sanitização de caracteres e geração de Slugs limpos para URLs amigáveis.
  • openssl: Motor criptográfico para proteção, hashes e tratamento de dados sensíveis.

📂 Estrutura Arquitetural do Ecossistema

A organização de pastas do Blumiga isola as responsabilidades de forma limpa, protegendo o núcleo e expondo apenas o estritamente necessário:

meu-projeto/
├── app/
│   ├── controllers/    # Controladores da Aplicação (Namespaces Dinâmicos)
│   ├── models/         # Camada de Regras de Negócio e Persistência
│   └── views/          # Camada de Visualização Isolada (HTML / Render)
├── config/
│   ├── config.php      # Constantes de Ambiente, Iniciação de Erros e $dbConfig
│   └── routes.php      # Definições centrais de Rotas e Grupos de Acesso
├── core/
│   ├── database/       # Core Data Layer (database, select, insert, update, delete, table)
│   ├── functions.php   # Helpers Globais de Sanitização, IP, Datas, Idioma e Segurança
│   ├── index.php       # Orquestrador Geral e Ciclo de Vida do Framework
│   └── route.php       # Motor interno de Matching de URLs e Closures
├── public/
│   └── index.php       # Ponto de entrada universal único (Single Entry Point)
├── storage/
│   ├── cache/          # Cache estático gerado em tempo de execução
│   └── logs/           # Registro centralizado de exceções SQL e do Sistema
└── vendor/             # Autoload estrutural e dependências do Composer

🚀 Instalação e Configuração Inicial

1. Inicializar o Autoload

Dentro do diretório raiz do projeto, rode o comando:

composer install

🗄️ 3. Configuração de Conexão (config/config.php)

O construtor do banco lê o array global $dbConfig e opcionalmente valida o modo $blumigaDev para depuração visual:

$blumigaDev = true; // Exibe erros estruturados em tela se em desenvolvimento

$dbConfig = [
    'default' => [
        'server'   => '127.0.0.1',
        'username' => 'root',
        'password' => 'sua_senha',
        'database' => 'blumiga_db',
        'port'     => 3306
    ]
];

📑 Guia de Utilização dos Módulos Principais

🛣️ Motor de Rotas (config/routes.php)

O Blumiga suporta mapeamento direto, parâmetros dinâmicos baseados em expressões regulares ({slug}) e isolamento de escopo via sub-pastas físicas:

// Rota Clássica
routeGET('/contato', 'contatoController@pageContato', 'site.contato');

// Rota Dinâmica Capturada com Parâmetros
routeGET('/produto/{id}/{slug}', 'produtoController@detalhe', 'produto.ver');

// Agrupamento de Escopo e Sub-Namespace Físico (app/controllers/admin/)
routeGroup('admin', function() {
    routeGET('/admin/dashboard', 'dashboardController@index', 'admin.dashboard');
    routePOST('/admin/salvar', 'dashboardController@store');
});

// Manipulador de Fallback para Páginas Não Encontradas
route404(function() {
    view('erros/404');
});

🎮 Padrão de Controlador (app/controllers/)

Os controladores trabalham isolados por namespaces, comunicando-se com modelos e injetando variáveis de escopo nas views de maneira protegida:

<?php
namespace Blumiga\controllers\site\homeController;

function pageHome() {
    // Carrega o model e recupera o namespace gerado dinamicamente
    $modelNs = model('homeModel');
    $dados = ($modelNs . 'getData')();

    // Renderiza a View injetando dados protegidos
    view('home', [
        'titulo' => 'Framework Blumiga',
        'lista'  => $dados
    ]);
}

🗄️ Query Builder Fluido (Blumiga\database)

A camada de dados separa as responsabilidades do CRUD em classes especialistas (select, insert, update, delete, table), otimizando recursos e mantendo a interface fluida.

🔍 Consultas Avançadas e Prepared Statements (select)

use Blumiga\database\select;

$db = new select();

// Exemplo 1: Query fluida com Joins e Condicionais complexas
$usuarios = $db->table('usuarios')
               ->column('id')
               ->column('nome', 'nome_completo')
               ->innerJoin('perfis', 'perfis.usuario_id = usuarios.id')
               ->where('status', 'ativo')
               ->whereIn('nivel_id', [1, 2])
               ->orderby('nome', true)
               ->limit(0, 15)
               ->select()
               ->fetchAll();

// Exemplo 2: Prepared Statement nativo anti-SQLInjection
$resultado = $db->table('usuarios')
                ->where('email', '?')
                ->and()
                ->where('senha', '?')
                ->prepared('contato@localhost', 's')
                ->prepared($senhaHash, 's')
                ->select()
                ->fetchAssoc();

📥 Inserção de Dados (insert)

use Blumiga\database\insert;

$db = new insert();
$query = $db->table('produtos')
            ->add('nome', 'Mouse Sem Fio')
            ->add('preco', 129.90)
            ->add('estoque', 50)
            ->insert();

$novoId = $query->idinsert();

🆙 Atualização de Dados (update)

use Blumiga\database\update;

$db = new update();
$db->table('usuarios')
   ->add('ultimo_login', date('Y-m-d H:i:s'))
   ->where('id', 42)
   ->update();

❌ Exclusão de Dados (delete)

use Blumiga\database\delete;

$db = new delete();
$db->table('sessoes')
   ->where('expira_em', '<', date('Y-m-d H:i:s'))
   ->semIgual() // Remove o operador '=' para aceitar filtros customizados no where
   ->delete();

🛠️ Abstração e Manipulação de Schema (table)

Criação e modificação de estruturas de tabelas dinamicamente diretamente pelo código:

use Blumiga\database\table;

$schema = new table();
$schema->table('clientes')
       ->engine('InnoDB')
       ->int()->primaryKey()->autoIncrement()->add('id')
       ->varchar(150)->add('razao_social')
       ->varchar(14)->null()->add('cnpj')
       ->decimal(10, 2)->defaultValueZero()->add('limite_credito')
       ->datetime()->add('criado_em')
       ->create();

⚡ Sistema de Cache Estático Integrado

Otimize gargalos e evite requisições repetitivas salvando dados pesados ou consultas complexas do banco em arquivos temporários em disco:

$cacheKey = 'produtos_destaque_home';

// Verifica a existência e a validade do cache (Ex: 3600 segundos = 1 hora)
if (cacheExists($cacheKey) && !cacheExpired($cacheKey, 3600)) {
    $produtos = getCache($cacheKey);
} else {
    // Se expirado ou inexistente, busca da fonte
    $db = new select();
    $produtos = $db->table('produtos')->where('destaque', 1)->select()->fetchAll();

    // Grava no cache físico para as próximas requisições
    setCache($cacheKey, $produtos);
}

🛡️ Helpers Globais de Utilidade e Segurança

O Blumiga traz funções prontas de escopo global projetadas para agilizar e blindar o desenvolvimento:

  • Proteção XSS (e()): Escapa strings dinâmicas antes da renderização na View.
    <h1><?php echo e($titulo); ?></h1>
    
  • Inputs Tratados (inputPOST() / inputGET()): Lê buffers de requisição aplicando filtros nativos, contornando o uso inseguro de superglobais brutas.
$email = inputPOST('email', FILTER_VALIDATE_EMAIL);
  • Geração de URL Reversa (route()): Constrói caminhos absolutos baseando-se nos apelidos configurados no arquivo de rotas.

    <a href="<?php echo route('produto.ver', ['id' => 5, 'slug' => 'mouse']); ?>">Ver Produto</a>
    
  • Internacionalização Dinâmica: Funções auxiliares calibradas para responder conforme a localidade atual do usuário:

    echo dayOfWeek('now'); // Exemplo: "Segunda-feira"
    echo formatCurrency(2490.50); // Exemplo: R$ 2.490,50
    

🛡️ Camada de Mitigação de Vulnerabilidades Nativa

  1. Injeção de SQL (SQLi): Mitigada através do uso sistemático de mysqli_stmt_bind_param em consultas que utilizam o método ->prepared(). Além disso, dados textuais passados em métodos literais como whereIn ou whereBetween passam obrigatoriamente por mysqli_real_escape_string.
  2. Cross-Site Scripting (XSS): Neutralizado por meio da função global de escape automático e($string).
  3. Injeção de Path/Directory Traversal: Parâmetros que referenciam caminhos físicos de arquivos de views e models passam por um tratamento rigoroso de substituição de strings (str_replace), inviabilizando saltos maliciosos de diretório.

👤 Autor

Murilo Gomes Julio

🔗 https://www.bluice.com.br

📺 https://youtube.com/@bluiceoficial

License

The Blumiga is provided under:

SPDX-License-Identifier: GPL-2.0-only

Beign under the terms of the GNU General Public License version 2 only.

All contributions to the Blumiga are subject to this license.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-2.0-only
  • 更新时间: 2026-06-23

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固