Documentación

Guía e inicio rápido

Instalación, primeros pasos y un resumen compacto del lenguaje. La guía completa de 17 partes con cada función en detalle viene como GUIDE.md en el paquete de descarga.

Instalación

Dos caminos igual de válidos, según si el proyecto ya usa Composer:

Con Composer

composer require uiengine/uiengine

Sin Composer

require 'UIEngine/src/Autoload.php';

Inicio rápido

  1. 1

    Incluir

    Carga el autoloader de Composer o incluye directamente UIEngine/src/Autoload.php.

    require 'vendor/autoload.php';
    use UIEngine\UIEngine;
    
    $ui = new UIEngine();
  2. 2

    Definir directorios

    Configura el directorio de plantillas, caché y logs (o usa los valores por defecto de Config.php).

    $ui->getPathManager()->setTemplate(__DIR__.'/templates');
    $ui->getPathManager()->setCache(__DIR__.'/cache');
  3. 3

    Asignar variables

    Proporciona cualquier valor de PHP (escalares, arrays, objetos) como variable de plantilla.

    $ui->assign('title', 'Hola mundo');
    $ui->assign('items', ['Café', 'Té', 'Cacao']);
  4. 4

    Mostrar la plantilla

    display() compila (con caché) y muestra el resultado renderizado.

    $ui->display('pagina.tpl');

Resumen del lenguaje

Las etiquetas más importantes de un vistazo – todas pasan por la misma gramática de expresiones segura.

EtiquetaSignificado
{$var}Muestra una variable, escapada como HTML.
{$var|escape:'url'}Aplica un modificador, aquí un escape sensible al contexto.
{if $expr}...{/if}Condición con operadores de comparación y lógicos.
{foreach $arr as $i}Bucle sobre un array, incluye $i@first/@last/@index.
{extends 'a.tpl'}Herencia: la plantilla actual define un layout padre.
{block name}...{/block}Una sección intercambiable dentro de la cadena de herencia.
{include 'a.tpl'}Incluye una plantilla parcial, con su propia entrada de caché.
{function name=x}Define una macro de plantilla reutilizable.
{eval var=$expr}Evalúa una cadena como mini-plantilla en tiempo de ejecución.
{nocache}...{/nocache}Permanece dinámico dentro de una página cacheada.

Herencia y layouts

Un layout padre define bloques intercambiables, las plantillas hijas los rellenan o los amplían:

layout.tpl

<!DOCTYPE html>
<html>
<body>
  {block content}Standard{/block}
</body>
</html>

seite.tpl

{extends 'layout.tpl'}
{block content}
  Eigener Inhalt hier.
{/block}

Plugins propios

Tres niveles de extensión, de simple a completo:

$ui->register('kuerzel', fn($text, $len = 80) =>
    mb_strlen($text) > $len ? mb_substr($text, 0, $len) . '…' : $text
);
{plugin name='kuerzel' args='$artikel->text, 120'}

Sandbox de política de seguridad

Opcional, para entornos con varios autores de plantillas con distinto nivel de confianza:

$policy = new SecurityPolicy();
$policy->allowModifiers(['upper', 'lower', 'date_format']);
$policy->allowConstants(['PHP_VERSION']);
$policy->disallowEval();
$policy->allowFetch('/var/www/shared/');

$ui->setSecurityPolicy($policy);

Una política siempre restringe más – nunca más allá de los límites que el compilador ya impone.

Caché

Las plantillas compiladas se cachean automáticamente y solo se recompilan al cambiar. Para páginas completas:

$ui->display('seite.tpl', $cacheId, 3600); // 1 Stunde

Las secciones dentro de {nocache}...{/nocache} no se ven afectadas y se reevalúan en cada solicitud – útil para widgets de carrito o marcas de tiempo en una página cacheada.

¿Aún tienes preguntas?

Las preguntas más frecuentes están respondidas en las FAQ – desde seguridad hasta requisitos del sistema.