Documentación de la Clase PHP `Html` 🛠️

La clase `Html` es un utilitario básico diseñado para la generación controlada de etiquetas HTML y para la visualización segura de código en la web. Permite construir elementos de dos tipos (etiquetas solas y pares con contenido) utilizando plantillas predefinidas.


1. Constantes de Definición

Estas constantes definen el modo de creación de la etiqueta en el método `crear()`.

Constante Valor Descripción
SOLA '1' Se utiliza para generar una etiqueta autocerrada (ej: <br>, <img>), que no tiene contenido ni etiqueta de cierre separada.
PAR '2' Se utiliza para indicar que se debe usar la plantilla de etiqueta con par (apertura y cierre).
TEXTO '3' Se utiliza internamente para indicar que el valor a insertar es el contenido (texto o HTML anidado) de una etiqueta de par.

2. Propiedad y Constructor

public function __construct(private array $base)

El constructor inicializa la propiedad privada $base, que contiene las plantillas básicas para generar HTML:

private array $base = [
    ["\n<","1",">\n"], // Plantilla para SOLA (<tag>)
    ["\n<","2",">\n"," ...LOGO ART... ","\n</","4",">\n"] // Plantilla para PAR (<tag> Contenido </tag>)
]
        

3. Métodos Privados

Estos métodos manejan la manipulación interna de las plantillas en la propiedad $base.

private function modificar(string $ubicacion, string $insertar)

Reemplaza los *placeholders* en las plantillas según la ubicación:

private function obtener(string $ubicacion)

Une y devuelve la cadena HTML de la plantilla modificada:


4. Métodos Públicos

public function crear(string $etiqueta, string $contenido): string

Método principal para generar HTML. Recibe la etiqueta (con o sin atributos) y el contenido.

public function logo(): string

Devuelve el arte ASCII del logo que está preestablecido como contenido por defecto en la plantilla de par (`$this->base[1][3]`).

public function imprimir(string $x, string $path, bool $ejecutar_codgo = false): void

Controla cómo se muestra el resultado en la página web.


5. Fortalezas y Limitaciones

Puntos Fuertes 🟢

Limitaciones 🔴


6. Ejemplo de Uso Detallado

El siguiente ejemplo muestra la creación de una etiqueta anidada, la visualización del código y la ejecución del HTML en la misma página.

Código PHP de Ejemplo

<?php

    // Asumimos que la clase Html está en la ubicación correcta.
    require_once "../Etiquetas/Html.php";

    $html = new Html; // Instancia 1: Para visualizar el código (imprimir=false)
    $html2 = new Html; // Instancia 2: Para ejecutar el código (imprimir=true)

    // Bloque 1: Visualiza el código generado (No lo ejecuta)
    $html -> imprimir (
        $html -> crear (
            'div id="logo"' , // Etiqueta externa (PAR)
            $html -> crear (
                'img src="../Archivos/Imagenes/logo.png" alt="logo"' ,
                SOLA // Etiqueta anidada (SOLA)
            )
        ) ,
        "../Archivos/Js" , // Ruta donde se encuentra 'copytxt.js'
        false // Muestra el código (escapado)
    );

    // Bloque 2: Ejecuta el código generado (Lo renderiza)
    $html2 -> imprimir (
        $html2 -> crear (
            'div' , 
            $html2 -> logo () // Usa el arte ASCII preestablecido
        ) ,
        "../Archivos/Js" ,
        true // Ejecuta el HTML (lo renderiza en el navegador)
    );

?>
        

Resultado del Bloque 1 (Visualización de Código)

<div id='contenedor-texto'>
<br />
<div id="logo">
<br />
<img src="../Archivos/Imagenes/logo.png" alt="logo">
<br />
</div>
</div>
<br><button id='boton-copiar'>copy txt</button><script src='../Archivos/Js/copytxt.js'></script>
        
*(Note que el código HTML se muestra como texto literal)*

Resultado del Bloque 2 (Ejecución de Código)

El navegador renderizaría lo siguiente, insertando el arte ASCII dentro de un `div`:

<div>
<pre>
███████   █████████   █████████
... (el resto del arte ASCII) ...
</pre>
</div>
        
*(El navegador mostraría un div conteniendo el arte ASCII renderizado)*