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. 1

    Einbinden

    Composer-Autoloader laden oder UIEngine/src/Autoload.php direkt einbinden.

    require 'vendor/autoload.php';
    use UIEngine\UIEngine;
    
    $ui = new UIEngine();
  2. 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. 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. 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.

TagBedeutung
{$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.