dbxapp 4.5.3
Technische API-Referenz der dbxapp-Plattform
Lade ...
Suche ...
Keine Treffer
dbxTPL Klassenreferenz

Deterministische Rendering-Engine für Variablen, Inclusions und Template-Bausteine. Mehr ...

Klassendiagramm für dbxTPL:

Öffentliche Methoden

 clear_raw_cache ()
 Leert den Rohcache gezielt nach einem In-Request-Editor-Schreibvorgang.
 replaces (string $tpl, $replaces)
 Ersetzt {var} durch Werte aus $data.
 replaces_dbx (string $tpl)
 Ersetzt DBX-Systemvariablen (CACHEBAR!).
 cleanup_optional_placeholders (string $content)
 Entfernt optionale Template-Slots, die bis zur finalen Ausgabe absichtlich unverarbeitet bleiben dürfen.
 read_tpl ($modul, $file, $type='htm')
 Lädt und cached ausschließlich den rohen Template-Inhalt.
 get_help_tpl (string $modul, string $file, $data='', int $depth=0)
 Rendert eine modulgebundene Hilfe aus tpl/help.
 get_tpl ($file, $data='', $type='htm', $i=0, $depth=0)
 Zentrale Template-Funktion.
 get_design_tpl ($design, $page, $language='de', $type='htm', $repurl=1)
 Lädt das Design-Template für eine bestimmte Seite und Sprache.
 replace_design_slots (string $content, string $design)
 Setzt optionale, dateibasierte Bereiche einer Designschale ein.
 get_design_tpl_dir_file ($type, $design, $file, $fallback=true)
Öffentliche Methoden geerbt von dbxObj
 set_callback_owner ($owner)
 Setzt ein explizites Owner-Objekt für Callback-Aufrufe.
 set_callback_id (string $id)
 Setzt den Namenspräfix für konventionelle Callback-Methoden.
 set_callback (string $event, string $callback)
 Ordnet einem Event einen konkreten Methodennamen zu.
 set_property ($name, $value, $section='', $modul='modul')
 Speichert eine Objekt- oder Session-Property.
 get_property ($name, $default='', $section='', $modul='modul')
 Liest eine Objekt- oder Session-Property.
 del_property ($name, $section='', $modul='modul')
 Löscht eine Objekt- oder Session-Property.
 dbx_next_process ($content, $process='', $mode='append')
 Fügt den nächsten dbxProcess-Schritt in eine Ausgabe ein.

Öffentliche Attribute

 $_modul = 'dbx'
Öffentliche Attribute geerbt von dbxObj
Public $_properties =array()
Public $_section =''
Public $_process =''

Weitere Geerbte Elemente

Geschützte Methoden geerbt von dbxObj
 normalize_callback_id (string $id)
 Normalisiert Callback-IDs auf gültige PHP-Methodenbestandteile.
 get_callback_name (string $event)
 Liefert den Methodennamen für ein Event.
 get_callback_owner ()
 Liefert das aktuelle Owner-Objekt für Callback-Aufrufe.
 callback (string $event, mixed $value)
 Führt einen Callback aus und gibt dessen Rückgabewert zurück.
Geschützte Attribute geerbt von dbxObj
 $_callback_owner = null
 $_callback_id = ''
 $_callbacks = array()

Ausführliche Beschreibung

Deterministische Rendering-Engine für Variablen, Inclusions und Template-Bausteine.


DBX TEMPLATE SYSTEM (dbxTPL)

Überblick

Die Klasse dbxTPL ist die zentrale Rendering-Engine des DBX-Systems. Sie ist bewusst einfach, deterministisch und performance-optimiert.

Templates sind reine Textdateien ohne Template-Sprache. Unterstützt werden nur:

{var} → Variablenersetzung [inc=...]...[/inc] → bedingte Inhalte [tpl=modul|file] → Template-Include (rekursiv)


HAUPTFUNKTION

get_tpl($file, $data = '', $type = 'htm', $i = 0, $depth = 0)

Zentrale Rendering-Funktion für Modul-Templates.


PIPELINE (Reihenfolge ist fix!)

  1. Modul auflösen ('modul' → aktives Modul)
  2. Rohes Template laden (inkl. Cache + Sprach-Fallback)
  3. Aktuelle DBX-Systemvariablen ersetzen
  4. {var} ersetzen (replaces)
  5. [inc] verarbeiten
  6. [tpl] rekursiv verarbeiten
  7. Editor-Marker setzen (optional)
  8. Ergebnis zurückgeben

TEMPLATE STRUKTUR

Modul Templates:

/dbx/modules/{modul}/tpl/{type}/{file}.htm /dbx/modules/{modul}/tpl/{type}/{file}_{lng}.htm

Sprach-Fallback:

file_de.htm → bevorzugt file.htm → fallback


CACHE SYSTEM

Speicherort:

private $template_cache im aktuellen dbxTPL-Objekt/Request

Struktur:

[modul|file|type|lng] = [ 'tpl' => 'Roher Template-Inhalt', 'path' => 'Dateipfad' ]

Cache enthält: ✔ Template-Inhalt ✔ Dateipfad

Cache enthält NICHT: ✘ replaces_dbx() Ergebnis ✘ $data replaces ✘ [inc] ✘ [tpl] ✘ Editor-Marker

Ziel: Maximale Performance bei vielen Template-Aufrufen (z.B. Tabellen)


REPLACE SYSTEM

  1. Data Replace (replaces)

    {name} → $data['name']

  2. DBX Replace (replaces_dbx) – wird bei jeder Ausgabe ausgeführt

    {dbx:lng} {dbx:design} {dbx:page} {dbx:title} {dbx:perma} {dbx:meta_description} {dbx:meta_keywords} {dbx:canonical} {dbx:robots} {dbx:og_title} {dbx:og_description} {dbx:og_image} {dbx:og_url} {dbx:head_meta}


[inc] SYSTEM (Bedingungen)

Syntax:

[inc=1]Text[/inc] [inc=0]Text[/inc]

Verhalten:

1 → Inhalt bleibt 0 → Inhalt wird entfernt

Funktionen (Whitelist):

[inc=has_group('admin')]

Wichtig:

  • {var} wird vorher ersetzt
  • Nur erlaubte Funktionen werden ausgeführt

[tpl] SYSTEM (Template Includes)

Syntax:

[tpl=modul|file] [tpl=modul|file|type]

Default:

type = 'htm'

Verhalten:

→ ruft intern get_tpl() auf → Ergebnis ersetzt den Tag

Eigenschaften:

✔ rekursiv ✔ $data wird weitergereicht ✔ verschachtelbar

Loop-Schutz:

maxDepth = 10


EDITOR SYSTEM (Marker)

Marker werden in Templates eingefügt:

... content ...

Zweck:

  • visuelles Inline-Editing (editor.js)
  • genaue Position im DOM
  • verschachtelte Templates erkennen

Eigenschaften:

✔ zerstört kein HTML ✔ funktioniert mit HTML-Listen und HTML-Tabellen ✔ unterstützt verschachtelte Templates

Steuerung über dbx_edit:

1 → nur Module ≠ dbx 2 → nur Modul dbx 3 → Level 1 + Level 2 4 → FD Definitionen 5 → DD Definitionen 6 → Modul-/Include-Class 7 → myX System-Class 8 → config.php 9 → alles


DESIGN TEMPLATES

Funktion:

get_design_tpl($design, $page, $language, $type)

Eigenschaften:

✘ kein Cache (nur einmal geladen) ✔ nutzt replaces_dbx() ✔ unterstützt Editor-Marker ✔ setzt Systemzustand (SysVar)

Pfad:

/dbx/design/{design}/{type}/{file}.htm

Fallback:

default.htm


SICHERHEIT

  • Keine Template-Sprache
  • Kein eval()
  • Nur Whitelist-Funktionen bei [inc]

PERFORMANCE

Optimiert für:

  • große Tabellen (1000+ Zeilen)
  • häufige Template-Aufrufe

Strategie:

  • File IO nur einmal
  • rohe Templates im requestlokalen Laufzeitcache
  • aktuelle Systemvariablen werden erst bei der Ausgabe eingesetzt

DESIGN-PHILOSOPHIE

Bewusst NICHT enthalten:

✘ keine Loops ✘ keine komplexe Logik ✘ keine Template-Sprache

Stattdessen:

✔ einfache, kontrollierte Bausteine ✔ volle Kontrolle im PHP-Code


ERGEBNIS

✔ schnell ✔ stabil ✔ deterministisch ✔ erweiterbar


Dokumentation der Elementfunktionen

◆ cleanup_optional_placeholders()

dbxTPL::cleanup_optional_placeholders ( string $content)

Entfernt optionale Template-Slots, die bis zur finalen Ausgabe absichtlich unverarbeitet bleiben dürfen.

[dbx:js] wird von Form/Report zuerst mit geschütztem JavaScript belegt. Bleibt der Marker danach noch stehen, existiert für diese Ausgabe kein JavaScript. {bar_middle} ist ein optionaler Bar-Slot.

◆ clear_raw_cache()

dbxTPL::clear_raw_cache ( )

Leert den Rohcache gezielt nach einem In-Request-Editor-Schreibvorgang.

Normale HTTP-Requests benötigen keinen Dateifingerprint: eine neue dbxTPL-Instanz beginnt immer mit einem leeren Cache.

◆ get_design_tpl()

dbxTPL::get_design_tpl ( $design,
$page,
$language = 'de',
$type = 'htm',
$repurl = 1 )

Lädt das Design-Template für eine bestimmte Seite und Sprache.

Parameter
string$designDas Design, das geladen werden soll.
string$pageDie Seite, die geladen werden soll.
string$languageDie Sprache, die verwendet werden soll.
string$typeDer Typ des Templates, z. B. 'htm' oder 'php'. Standard ist 'htm'.
int$repurlBestimmt, ob URLs ersetzt werden sollen (1 = Ja, 0 = Nein). Standard ist 1.
Rückgabe
string Der Inhalt des Templates.
Beispiel
$page_content = $this->get_design_tpl('user', 'home', 'de', 'htm');
get_design_tpl($design, $page, $language='de', $type='htm', $repurl=1)
Lädt das Design-Template für eine bestimmte Seite und Sprache.
Definition dbxTPL.class.php:1168

Benutzt $config, $page, get_design_tpl_dir_file(), replace_design_slots() und replaces_dbx().

◆ get_design_tpl_dir_file()

dbxTPL::get_design_tpl_dir_file ( $type,
$design,
$file,
$fallback = true )

Benutzt $base.

Wird benutzt von get_design_tpl() und replace_design_slots().

◆ get_help_tpl()

dbxTPL::get_help_tpl ( string $modul,
string $file,
$data = '',
int $depth = 0 )

Rendert eine modulgebundene Hilfe aus tpl/help.

Hilfetexte sind damit versionierte Bestandteile ihres Moduls und weder CMS-Inhalt noch Eigentum eines zentralen Admin-Moduls. Sprachvarianten folgen demselben Vertrag wie normale Templates (name_en.htm usw.).

Benutzt if.

◆ get_tpl()

dbxTPL::get_tpl ( $file,
$data = '',
$type = 'htm',
$i = 0,
$depth = 0 )

Zentrale Template-Funktion.

Pipeline:

  1. Modul auflösen
  2. Rohes Template laden (Cache)
  3. Aktuelle DBX-Systemvariablen einsetzen
  4. replaces($data)
  5. [inc]
  6. [tpl] rekursiv
  7. Marker (optional)

Benutzt read_tpl(), replaces() und replaces_dbx().

◆ read_tpl()

dbxTPL::read_tpl ( $modul,
$file,
$type = 'htm' )

Lädt und cached ausschließlich den rohen Template-Inhalt.

DBX-Systemvariablen werden bewusst erst in get_tpl() eingesetzt. Damit bleiben Design, Sprache, Seite und andere Laufzeitwerte auch dann aktuell, wenn der Template-Cache über mehrere Requests einer Session erhalten bleibt.

Benutzt $base und $lng.

Wird benutzt von get_tpl().

◆ replace_design_slots()

dbxTPL::replace_design_slots ( string $content,
string $design )

Setzt optionale, dateibasierte Bereiche einer Designschale ein.

Ein Design kann in seinen Seiten-Templates die Marker [dbx:logo], [dbx:branding] und [dbx:footer] verwenden. Der Inhalt wird aus htm/logo.htm, htm/branding.htm beziehungsweise htm/footer.htm desselben Designs gelesen. Fehlt eine Fragmentdatei, wird nur der betreffende Marker entfernt. Designs ohne diese Marker bleiben vollständig unverändert.

Die Fragmentdateien durchlaufen dieselben dbxTPL-Systemersetzungen wie die Designschale. [inc=...] und [tpl=...] werden anschließend durch den normalen Ablauf von get_design_tpl() verarbeitet.

Parameter
string$contentBereits geladenes Design-Template.
string$designAufgelöster technischer Designname.
Rückgabe
string Template mit eingesetzten Designfragmenten.

Benutzt get_design_tpl_dir_file() und replaces_dbx().

Wird benutzt von get_design_tpl().

◆ replaces()

dbxTPL::replaces ( string $tpl,
$replaces )

Ersetzt {var} durch Werte aus $data.

Benutzt if.

Wird benutzt von get_tpl().

◆ replaces_dbx()

dbxTPL::replaces_dbx ( string $tpl)

Ersetzt DBX-Systemvariablen (CACHEBAR!).

Unterstuetzte globale Laufzeitwerte umfassen unter anderem {dbx:version} und {dbx:asset_version} für die Version der aktuellen Installation.

Wird benutzt von get_design_tpl(), get_tpl() und replace_design_slots().

Dokumentation der Datenelemente

◆ $_modul

dbxTPL::$_modul = 'dbx'

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: