Engine

Die HTML5 Engine der Alvine HTML-Komponente besitzt besondere Funktionen für die Manipulation von HTML-Dokumenten. Anders als vergleibare Template-Engines arbeitet diese nicht mit Suchen erstzen, sondern mit einem vollständigen HTML5 DOM 1 Objekt.

Dadurch ergeben sich eine Vielzahl von Möglichkeiten der Manipulation. Eine Engine-Instanz wird über den Konstruktor ohne Parameter erstellt.

$engine = new \Alvine\Markup\Html\Engine();

Operationen

Die Operationen im HTML-Dokument werden wie in dem Tutorial zu den Operatoren beschrieben als Attribute des HTML-Dokuments definiert. Das erlaubt es valide HTML5-Dokumente zu erstellen.

Der Standardprefix für diese Art der Auszeichnung ist data-. Um Kollisionen mit anderen Engines, Sprachen oder Systemen zu vermeiden, lässt sich der Prefix ändern.

$engine->setAttributePrefix('my-prefix');

Im HTML-Dokument kommt nun zum Beispiel für die Ersetzung nicht mehr data-replace, sondern my-refix-replace zum Einsatz. Die aktuelle Einstellung kann über die Methode Engine::getAttributePrefix() abgefragt werden.

Die Daten für die Engin kommen über ein Dataset.

Cache

Diese Art der Bearbeitung einer HTML-Datei ist sehr flexibel, allerdings nicht sehr performant. Aus diesem Grund sollte der Einsatz gut überlegt sein. Um die Performance zu Verbessern unterstützt die Komponente den aus dem Alvine-Framework bekannten CacheManager. Für das Caching stehen mehrere Optionen zur Verfügung. So kann, wie in diesme Beispiel, Memcache zum Einsatz kommen. Alternativ bieten sich auch das Speichern im Dateisystem oder in einer Riak-Datenbank an.

Für das folgende Beispiel kann ein Memcache-Container via docker run -p 11211:11211 --name memcache -d memcached memcached -m 64 gestartet werden.

/** URI des Cache-Storage */
$cacheURI=new \Alvine\Net\Resource\URI('memcache://localhost:11211');

/** Datenobjekt */
$dataObject=new \Alvine\Persistence\Provider\Memcache\DataObject($cacheURI);

/** Cachmanager initialisieren */
$cacheManager=new \Alvine\Cache\CacheManager($dataObject);

/** Cachmanager zuweisen */
$engine=(new \Alvine\Markup\Html\Engine())->setCacheManager($cacheManager);

Markup

Das vom Designer integrierte Markup zur Steuerung der Engine wird in der Standardkonfiguration nach der Bearbeitung entfernt. Über den Schalter Engine::removeMarkup($mode) kann dieses Verhalten - zum Beispiel für das Debugging - angepasst werden.

Debugging

Um sich Fehlermeldungen der Engine anzeigen zu lassen kann über die Methode Engine::setDebugNode() eine Node als Ausgabe-Container für die Fehlermeldungen definiert werden. Alternativ kann dies auch im HTML-Template über das Attribute data-debug erfolgen.

5f74ad41-a817-41b5-d8f1-1674cf5f12f2

  1. Document Object Model