Dokumentation
Anleitung & Schnellstart
Installation, die ersten Schritte und ein kompakter Sprachüberblick. Die ausführliche, 17-teilige Anleitung mit jedem Feature im Detail liegt als GUIDE.md im Download-Paket.
Installation
Zwei gleichwertige Wege, je nachdem ob das Projekt bereits Composer nutzt:
Mit Composer
composer require uiengine/uiengine
Ohne Composer
require 'UIEngine/src/Autoload.php';
Schnellstart
-
1
Einbinden
Composer-Autoloader laden oder UIEngine/src/Autoload.php direkt einbinden.
require 'vendor/autoload.php'; use UIEngine\UIEngine; $ui = new UIEngine(); -
2
Verzeichnisse festlegen
Template-, Cache- und Log-Verzeichnis setzen (oder die Standardwerte aus Config.php verwenden).
$ui->getPathManager()->setTemplate(__DIR__.'/templates'); $ui->getPathManager()->setCache(__DIR__.'/cache'); -
3
Variablen zuweisen
Beliebige PHP-Werte (Skalare, Arrays, Objekte) als Template-Variablen bereitstellen.
$ui->assign('title', 'Hallo Welt'); $ui->assign('items', ['Kaffee', 'Tee', 'Kakao']); -
4
Template anzeigen
display() kompiliert (gecacht) und gibt das gerenderte Ergebnis aus.
$ui->display('seite.tpl');
Sprachüberblick
Die wichtigsten Tags auf einen Blick – alle laufen durch dieselbe sichere Ausdrucks-Grammatik.
| Tag | Bedeutung |
|---|---|
{$var} | Variable HTML-escaped ausgeben. |
{$var|escape:'url'} | Modifier anwenden, hier kontextabhängiges Escaping. |
{if $expr}...{/if} | Bedingung mit Vergleichs- und Logik-Operatoren. |
{foreach $arr as $i} | Schleife über ein Array, inkl. $i@first/@last/@index. |
{extends 'a.tpl'} | Vererbung: aktuelles Template definiert ein Eltern-Layout. |
{block name}...{/block} | Austauschbarer Abschnitt innerhalb der Vererbungskette. |
{include 'a.tpl'} | Teil-Template einbinden, eigener Cache-Eintrag. |
{function name=x} | Wiederverwendbares Template-Makro definieren. |
{eval var=$expr} | String zur Laufzeit als Mini-Template auswerten. |
{nocache}...{/nocache} | Bleibt innerhalb einer gecachten Seite dynamisch. |
Vererbung & Layouts
Ein Eltern-Layout definiert austauschbare Blöcke, Kind-Templates füllen oder erweitern sie:
layout.tpl
<!DOCTYPE html>
<html>
<body>
{block content}Standard{/block}
</body>
</html>
seite.tpl
{extends 'layout.tpl'}
{block content}
Eigener Inhalt hier.
{/block}
Eigene Plugins
Drei Erweiterungsebenen, von einfach bis vollständig:
$ui->register('kuerzel', fn($text, $len = 80) =>
mb_strlen($text) > $len ? mb_substr($text, 0, $len) . '…' : $text
);
{plugin name='kuerzel' args='$artikel->text, 120'}
Security-Policy-Sandbox
Optional, für Umgebungen mit mehreren, unterschiedlich vertrauenswürdigen Template-Autoren:
$policy = new SecurityPolicy();
$policy->allowModifiers(['upper', 'lower', 'date_format']);
$policy->allowConstants(['PHP_VERSION']);
$policy->disallowEval();
$policy->allowFetch('/var/www/shared/');
$ui->setSecurityPolicy($policy);
Eine Policy schränkt immer nur weiter ein – nie mehr, als die ohnehin bestehenden Compiler-Grenzen zulassen.
Caching
Kompilierte Templates werden automatisch gecacht und nur bei Änderung neu übersetzt. Für ganze Seiten:
$ui->display('seite.tpl', $cacheId, 3600); // 1 Stunde
Abschnitte innerhalb von {nocache}...{/nocache} bleiben davon unberührt und werden bei jedem Aufruf neu ausgewertet – praktisch für Warenkorb-Widgets oder Zeitstempel auf einer sonst gecachten Seite.
Noch Fragen offen?
Die häufigsten Fragen sind in der FAQ beantwortet – von Sicherheit bis Systemvoraussetzungen.