8.4 Weitere Möglichkeiten der Template-Komponente 

Wie bereits erwähnt, ist es möglich, mit ezcTemplate Werte aus Templates zurückzugeben und diese in der einbindenden Applikation weiterzuverarbeiten.
8.4.1 Rückgaben verarbeiten 

Wenn ein einfacher Algorithmus für die Darstellungslogik implementiert werden muss, so ist es für den Entwickler der Templates nicht immer möglich, eigene Template-Funktionen zu implementieren, sei es, weil kein Zugriff auf die Applikation besteht oder der Entwickler kein PHP beherrscht. In einem solchen Fall ist es denkbar, Teil-Templates inklusive ihrer Möglichkeit, beliebig viele Werte zurückzugeben, als Funktionen zu verwenden. In dem folgenden Beispiel wird die Fakultät einer Zahl berechnet, denn hierfür steht in der Template-Komponente bislang keine Funktion bereit.
{use $number=1}
{var $result = 1,
$i = 2}
{while $i <= $number}
{$result = $result * $i}
{$i++}
{/while}
{return $result}Listing 8.19 Rückgabe der Fakultät aus dem Template
Das Template und der Algorithmus zur Berechnung der Fakultät sind einfach. In der ersten Zeile wird die Variable $number importiert. Falls diese nicht verfügbar ist, soll sie mit 1 initialisiert werden. Danach werden zwei lokale Variablen deklariert, die während der Schleife zur Berechnung gebraucht werden. Der Algorithmus selbst ist trivial: Solange $i kleiner oder gleich $number ist, wird das bisherige Ergebnis mit $i multipliziert, welches daraufhin um 1 erhöht wird. Zum Schluss wird das berechnete Ergebnis zurückgegeben. Optional lässt sich im return-Block die Variable über as umbenennen, wie Sie es von send gewöhnt sind. Dieses Template lässt sich direkt aus PHP verwenden und der Rückgabewert aus der Applikation abfragen.
$template->send->number = 6; $template->process( 'faculty.ezt' ); echo 'Result: ', $template->receive->result;
Listing 8.20 Berechnung der Fakultät einer Zahl aus PHP heraus
Nachdem die Template-Komponente wie bekannt initialisiert wurde, kann über send der Template-Variablen $number ein Wert zugewiesen werden und daraufhin das Template ausgeführt werden. Nach der Ausführung des Templates sind die Rückgaben über die $receive-Eigenschaft des Template-Objekts verfügbar. Dementsprechend lautet die Ausgabe des obigen Codes wie folgt:
Result: 720
Auch innerhalb von Templates lassen sich Rückgaben anderer Templates erfragen und weiterverarbeiten, wie das folgende Beispiel zeigt.
{include 'faculty.ezt'
send '5' as $number
receive $result as $faculty}
Ergebnis: {$faculty}Listing 8.21 Berechnung der Fakultät einer Zahl aus einem Template heraus
Neben dem bekannten Verfahren, Werte über $send an das Template zu senden, lassen sich über $receive Variablen, auch umbenannt, zurückerhalten. In dem gezeigten Listing wird das erhaltene Ergebnis in der fünften Zeile ausgegeben. In diesem Fall ist das erwartete Resultat 120.
8.4.2 Eigene Template-Blöcke definieren 

Als Template-Block werden Strukturen, wie für raw verwendet, bezeichnet. Auch diese lassen sich selbst definieren. So findet sich als Beispielimplementierung ein Brainfuck [http://de.wikipedia.org/wiki/Brainfuck ] -Interpreter in der Dokumentation zur Template-Komponente. Dies funktioniert ähnlich der Definition einer eigenen Template-Funktion und ist online im Tutorial beschrieben. [http://ezcomponents.org/docs/api/latest/introduction_Template.html#custom-blocks ]
Abbildung 8.3 Blog-Einträge mit deutschem Datum





Ihre Meinung






