Dokumentacja
Instrukcja i szybki start
Instalacja, pierwsze kroki i zwięzły przegląd składni. Pełna, 17-częściowa instrukcja z każdą funkcją opisaną szczegółowo znajduje się jako GUIDE.md w paczce do pobrania.
Instalacja
Dwie równorzędne ścieżki, w zależności od tego, czy projekt korzysta już z Composera:
Z Composerem
composer require uiengine/uiengine
Bez Composera
require 'UIEngine/src/Autoload.php';
Szybki start
-
1
Dołączenie
Załaduj autoloader Composera lub dołącz bezpośrednio UIEngine/src/Autoload.php.
require 'vendor/autoload.php'; use UIEngine\UIEngine; $ui = new UIEngine(); -
2
Ustawienie katalogów
Ustaw katalog szablonów, cache i logów (lub użyj domyślnych wartości z Config.php).
$ui->getPathManager()->setTemplate(__DIR__.'/templates'); $ui->getPathManager()->setCache(__DIR__.'/cache'); -
3
Przypisanie zmiennych
Przekaż dowolną wartość PHP (skalary, tablice, obiekty) jako zmienną szablonu.
$ui->assign('title', 'Witaj świecie'); $ui->assign('items', ['Kawa', 'Herbata', 'Kakao']); -
4
Wyświetlenie szablonu
display() kompiluje (z cache) i wypisuje wyrenderowany wynik.
$ui->display('strona.tpl');
Przegląd składni
Najważniejsze tagi w skrócie – wszystkie przechodzą przez tę samą, bezpieczną gramatykę wyrażeń.
| Tag | Znaczenie |
|---|---|
{$var} | Wypisuje zmienną, escapowaną jako HTML. |
{$var|escape:'url'} | Zastosowanie modyfikatora, tu escapowanie zależne od kontekstu. |
{if $expr}...{/if} | Warunek z operatorami porównania i logicznymi. |
{foreach $arr as $i} | Pętla po tablicy, wraz z $i@first/@last/@index. |
{extends 'a.tpl'} | Dziedziczenie: bieżący szablon definiuje layout nadrzędny. |
{block name}...{/block} | Wymienna sekcja w łańcuchu dziedziczenia. |
{include 'a.tpl'} | Dołącza szablon częściowy, z własnym wpisem w cache. |
{function name=x} | Definiuje wielokrotnie używane makro szablonu. |
{eval var=$expr} | Ocenia ciąg znaków jako mini-szablon w czasie działania. |
{nocache}...{/nocache} | Pozostaje dynamiczny w obrębie cache’owanej strony. |
Dziedziczenie i layouty
Layout nadrzędny definiuje wymienne bloki, szablony potomne wypełniają je lub rozszerzają:
layout.tpl
<!DOCTYPE html>
<html>
<body>
{block content}Standard{/block}
</body>
</html>
seite.tpl
{extends 'layout.tpl'}
{block content}
Eigener Inhalt hier.
{/block}
Własne pluginy
Trzy poziomy rozszerzeń, od prostego do pełnego:
$ui->register('kuerzel', fn($text, $len = 80) =>
mb_strlen($text) > $len ? mb_substr($text, 0, $len) . '…' : $text
);
{plugin name='kuerzel' args='$artikel->text, 120'}
Piaskownica polityki bezpieczeństwa
Opcjonalna, dla środowisk z wieloma autorami szablonów o różnym poziomie zaufania:
$policy = new SecurityPolicy();
$policy->allowModifiers(['upper', 'lower', 'date_format']);
$policy->allowConstants(['PHP_VERSION']);
$policy->disallowEval();
$policy->allowFetch('/var/www/shared/');
$ui->setSecurityPolicy($policy);
Polityka zawsze tylko dodatkowo ogranicza – nigdy poza granice, które i tak wyznacza kompilator.
Cache
Skompilowane szablony są automatycznie cache’owane i ponownie kompilowane tylko przy zmianie. Dla całych stron:
$ui->display('seite.tpl', $cacheId, 3600); // 1 Stunde
Sekcje wewnątrz {nocache}...{/nocache} pozostają niezależne i są ponownie obliczane przy każdym żądaniu – przydatne np. dla widżetów koszyka lub znaczników czasu na stronie objętej cache’owaniem.
Masz jeszcze pytania?
Najczęstsze pytania są odpowiedziane w FAQ – od bezpieczeństwa po wymagania systemowe.