Home  PHP Projekte  PHP Schulung  Informationsquellen  Geschichte  Core PHP  Fortgeschrittenes PHP  Templates  Was?  Motivation  Klassifizierung  Testvorlage  Keine Templates  PHPLib  HTML  E-Mail  IT[X]  Cache-Technologien  OOH Forms  Technik der Site  Büchertipps  Fotografie  Airbrush  Kontakt  Stuff 
|
Isotemplates
Das Templatesystem der PHPLib
wurde von Kristian Köhntopp geschrieben.
Es stammt von den aus der Perl-Welt stammenden und nach PHP portierten
FastTemplates ab.
Der Rewrite zeichnet sich durch eine bessere API und die Verwendung der schnellen
preg_*-Funktionsgruppe aus.
"preg" steht für "Perl compatible regular expressions", einer der
zwei Möglichkeiten mit
Regulären Ausdrücken in PHP zu arbeiten. Die Template-Engine ist
gut dokumentiert und bildet ein mächtiges, flexibles Werkzeug, sofern die
API erst einmal verstanden wurde. Neben einfachen Ersetzungen
kann die Klasse "Blöcke" handhaben, die wiederholt werden können.
Die gesamte API ist auf Blöcke ausgelegt.
Platzhalter werrden in der Syntax der Template-Engine per Default von
geschweiften Klammern umschlossen. Der Framework dieser Homepage verhindert
leider die Darstellung, weshalb eckige Klammern gewählt wurden. Eine Wechsel
von geschweiften Klammern auf eckige Klammern zur Kennzeichnung ist
durch eine einfache Anpassung der Template-Engine möglich und u.U. auch notwendig um
Kollisionen mit Ausdrücken wie [font:sans-serif] zu verrhindern.
| newsletter_phplib.txt |
...
+++ News +++
<!-- BEGIN news -->
[HEADLINE]
[ERSCHEINUNGSDATUM], [URL]
<!-- END news -->
...
|
|
Sich wiederholende Elemente, wie <!-- LOOP:news --> des Beispiel newsletter.txt
werden als sogenannte Blöcke abgelegt und in der Form <-- BEGIN blockname -->/<-- END blockname -->
gekennzeichnet.
Im ersten Arbeitsschritt werden ein oder mehrere Template-Dateien als Blöcke
geladen. Dies erfolgt mit der Methode setFile().
| Liste von Blöcken |
|
Liste von Handles |
|
Wertepool |
| main |
...
+++ News +++
<!-- BEGIN news -->
[HEADLINE]
[ERSCHEINUNGSDATUM], [URL]
<!-- END news -->
...
|
|
|
Anschließend wird dem System die mitgeteilt,
daß sich im Block "main" ein Block "news" befindet,
der unter dem Handle "NEWS_ROWS" angesprochen wird.
Die Schachtelung der Blöcke wird mit setBlock()
beschrieben.
| Liste von Blöcken |
|
Liste von Handles |
|
Wertepool |
| main |
...
+++ News +++
[_NEWS_ROWS]
...
|
| news |
[HEADLINE]
[ERSCHEINUNGSDATUM], [URL]
|
|
|
|
|
In einer Schleife erfolgen mit setVar() Wertezuweisungen für
einzelne Platzhalter. Es füllt sich ein Wertepool,
welcher unter Anwendung der Methode parse() dem Inhalt des
Handles NEWS hinzugefügt wird.
| Liste von Blöcken |
|
Liste von Handles |
|
Wertepool |
| main |
...
+++ News +++
[_NEWS_ROWS]
...
|
| news |
[HEADLINE]
[ERSCHEINUNGSDATUM], [URL]
|
|
|
|
|
| HEADLINE |
Flensburger Pilsener |
| ERSCHEINUNGSDATUM |
1516 |
| URL |
http://www.flens.de |
|
| Liste von Blöcken |
|
Liste von Handles |
|
Wertepool |
| main |
...
+++ News +++
[_NEWS_ROWS]
...
|
| news |
[HEADLINE]
[ERSCHEINUNGSDATUM], [URL]
|
|
|
| NEWS_ROWS |
Flensburger Filsener
1516, http://www.flens.de
|
|
|
|
Nach Abschluß der Schleifendurchläufe wird mittels parse()
der Block "main" geparst und unter dem Handle "MAIN" bereitgestellt.
Der parse()-Aufruf erkennt automatisch, daß der Inhalt des
Handles "NEWS_ROWS" in den Block "main" einzufügen ist.
| Liste von Blöcken |
|
Liste von Handles |
|
Wertepool |
| main |
...
+++ News +++
[_NEWS_ROWS]
...
|
| news |
[HEADLINE]
[ERSCHEINUNGSDATUM], [URL]
|
|
|
| NEWS_ROWS |
Flensburger Filsener
1516, http://www.flens.de
1000 kostenlose Banner
2002, http://banner.netuse.de
|
| MAIN |
...
+++ News +++
Flensburger Filsener
1516, http://www.flens.de
1000 kostenlose Banner
2002, http://banner.netuse.de
...
|
|
|
|
Der Inhalt des Handles "MAIN" wird abschließend mit der Methode p() ausgedruckt
oder als String von der Methode get() zürückgeliefert und weiterverarbeitet.
< ^ >
|