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
Incluir
Carga el autoloader de Composer o incluye directamente UIEngine/src/Autoload.php.
require 'vendor/autoload.php'; use UIEngine\UIEngine; $ui = new UIEngine(); -
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
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
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.
| Etiqueta | Significado |
|---|---|
{$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.