mugomes/miphanttpl

Gera HTML de forma dinâmica com PHP.

Installs: 6

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/mugomes/miphanttpl

3.0.0 2026-01-10 20:49 UTC

This package is auto-updated.

Last update: 2026-01-10 20:50:43 UTC


README

MiPhantTPL é uma biblioteca PHP leve, extensível e minimalista para geração de HTML através de métodos dinâmicos, permitindo escrever HTML de forma programática, fluente e sem templates externos.

Cada método chamado representa uma tag HTML, funcionando como uma DSL (Domain Specific Language) para HTML em PHP.

✨ Características

  • Geração dinâmica de HTML via __call
  • Cada método representa uma tag HTML
  • Suporte automático a:
    • Tags que não possuem fechamento (img, br, input, entre outros)
    • Atributos booleanos (checked, disabled, required, entre outros)
  • Possibilidade de estender tags auto-fecháveis
  • Possibilidade de estender atributos sem valor
  • Paradigma funcional
  • Zero dependências
  • Código pequeno, previsível e fácil de integrar

📦 Instalação

Via Composer

composer require mugomes/miphanttpl

Manual

Copie o arquivo MiPhantTPL.php para seu projeto e inclua via autoload ou require.

🚀 Uso básico

use MiPhantTPL\MiPhantTPL;

$tpl = new MiPhantTPL();

echo $tpl->p('Olá mundo');

Resultado:

<p>Olá mundo</p>

🧱 Criando elementos HTML

echo $tpl->h1('Título');
echo $tpl->p('Conteúdo do parágrafo');
<h1>Título</h1>
<p>Conteúdo do parágrafo</p>

🏷️ Atributos HTML

Os atributos são passados como array:

echo $tpl->a(
    'Acessar site',
    ['href' => 'https://example.com', 'target' => '_blank']
);
<a href="https://example.com" target="_blank">Acessar site</a>

✅ Atributos sem valor (booleanos)

A biblioteca reconhece automaticamente atributos booleanos:

echo $tpl->input([
    'type' => 'checkbox',
    'checked'
]);
<input type="checkbox" checked>

➕ Adicionando novos atributos sem valor

Você pode estender a lista padrão de atributos booleanos:

$tpl->addAttributeNoValue(['inert', 'itemscope']);
echo $tpl->div(
    'Conteúdo',
    ['inert']
);
<div inert>Conteúdo</div>

🔁 Tags que não possuem fechamento

Tags como img, br, input e similares não recebem fechamento automaticamente:

echo $tpl->img([
    'src' => 'foto.jpg',
    'alt' => 'Imagem'
]);
<img src="foto.jpg" alt="Imagem" />

➕ Adicionando novas tags sem fechamento

Caso você utilize elementos personalizados (ex: Web Components):

$tpl->addNotClose(['mycomponent']);
echo $tpl->mycomponent([
    'data-id' => '123'
]);
<mycomponent data-id="123">

🧩 HTML aninhado

Como tudo retorna string, é possível aninhar facilmente:

echo $tpl->div(
    $tpl->h2('Título') .
    $tpl->p('Texto do conteúdo'),
    ['class' => 'container']
);

⚙️ Uso com paradigma funcional (code())

O método code() permite escrever HTML de forma estruturada:

echo $tpl->code(function ($html) {
    return
        $html->doctype() .
        $html->html(
            $html->body(
                $html->h1('MiPhantTPL') .
                $html->p('Gerando HTML com PHP puro')
            )
        );
});

📄 Doctype HTML5

echo $tpl->doctype();
<!DOCTYPE html>

👤 Autor

Murilo Gomes Julio

🔗 https://mugomes.github.io

📺 https://youtube.com/@mugomesoficial

📜 Licença

Copyright (c) 2025-2026 Murilo Gomes Julio

Licensed under the MIT.

All contributions to the MiPhantTPL are subject to this license.