Biphrost: Template

Monday, 06 October 2008, 18:11 von Blackflash

Wie fast jedes Framework verfügt auch Bifrost über eine Template-Engine. Im Gegensatz zu vielen anderen Entwicklungen stellt die Template-Klasse aus Bifrost lediglich einen leichtgewichtigen Wrapper für PHP-Templates dar. Ziel ist es nicht, möglichst viele Funktionalitäten bereitzustellen, sondern einen Container anzubieten, der in den Einstiegspunkten mit Daten gefüllt wird und am Ende der Abfertigung lediglich dargestellt wird. Möchte man View-Helpers verwenden, muss man diese selbst entwickeln oder man verwendet Template-Engines, die solche Features bieten. Obgleich die Template-Klasse Bestandteil von Bifrost ist, kann sie sehr leicht gegen andere Template-Engines ausgetauscht werden, da die Template-Klasse nur in Teilen von Bifrost verwendet wird, die durch die Applikations-Entwickler geändert werden sollen.

Der Zugriff auf die Templates erfolt über die magischen Methoden __get, __set, __isset und __unset. Diese magischen Methoden können allerdings auch zu einem Fehlverhalten führen, da Templates im Inneren des Template-Objekts dargestellt werden. Wird von außerhalb eine Variable gesetzt, deren Name identisch mit einer nicht-sichtbaren Membervariable ist, dann würde ein Aufruf demselben Namen im Template zum Holen der falschen Variable führen. Deshalb wird zur Darstellung der Templates die Funktion extract benutzt, um lokalen Zugriff auf die gespeicherten Variablen zu ermöglichen, es ist deshalb ratsam, nur auf lokale Variablen zuzugreifen. Beispiel:

// Außerhalb des Templates $template = new Template('foobar.phtml'); $template->template = 'foo'; // Innerhalb des Templates echo $this->template; // gibt 'foobar.phtml' aus echo $template; // gibt 'foo' aus

Ein Template-Objekt ist immer mit einer Template-Datei gekoppelt, sodass ein Casten des Objekts zu einem String zum Rendern des Templates führt. Analog verfährt die Methode render, die das Template sofort darstellt. Ein Ändern der Template-Datei ist nicht möglich, allerdings kann man mithilfe der Methode derive ein neues Objekt erstellen, das die gleichen Variablen enthält, aber auf ein anderes Template zeigt.

Kommentare


Kommentiere!

Your Name:


Your Email:


Your URL:


Spam Prevention:
Enter the text above into the box below.
If you are unable to read it, refresh the page.


Your Comment: