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

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