Warning: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php on line 58
Templates mit PHP PHP Tutorials nicht nur für Anfänger php-resource.de

php-resource.de

PHP Tutorial: Templates mit PHP

Dieses Tutorial beschreibt in mehreren Teilen wie man Templates in PHP verwendet. Ferner erhält man eine Einführung in die Entwicklung eines eigenen Templatesystems.

|17.01.2003 | mortalan@ | 16563 | KAT : PHP | | Kommentare 0


3

4

1.3 Grundzüge des Template-Einsatzes in PHP

Wie in 1.2 gesehen, befinden sich in der HTML-Datei Vorgaben des Typs "". Dies sind die Platzhalter, nach denen unser Templatesystem während des Parser-Vorganges sucht und die ersetzt werden. Wenn man sich die Quelltexte verschiedener Applikationen (Foren, CMS, etc.) ansieht, stellt man fest, das die dortigen Templatesysteme von dem hier gezeigten abweichen. Das Grundprinzip ist allerdings bei allen gleich, die Unterschiede liegen nur in der Funktionalität. Bei sehr komplexen Templatesystemen ist es noch möglich, durch diese Art der Platzhalter einfache und verschachtelte Schleifen und Bedingungen darzustellen, das Ganze würde aber den Rahmen für die kommenden Tutorials sprengen (Aber wie bereits gesagt, bei entsprechender Nachfrage kann ich mir dazu gerne was einfallen lassen!).

Wie funktioniert so etwas?

Das Herzstück eines jeden Templatesystems ist der Parser, der den HTML-Code generiert. Dieser ist wie oben schon gesagt je nach Einsatzwunsch und gewünschten Funktionen sehr unterschiedlich von der Komplexität.
Das Grundprinzip ist es ja, die Platzhalter zu finden und etwas damit anzufangen. Aber erst mal ein paar Beispiele wie mögliche Platzhalter aussehen könnten:

Einfache Platzhalter:


  • steht für eine Variable, die eingesetzt wird => $tabelle
  • borderleft getrennt wird nach ":"
    steht für ein Array, welches eingesetzt wird =>$iv['borderleft']

Komplexere Platzhalter (Schleifen)

- array:row:open:0 getrennt wird nach ":"
1 => steht für einen Schleifentyp (hier einfach mal eine While-Schleife)
array => hier können verschiedene Sachen definiert sein. Array steht für die Abfrage einer Datenbank, also mysql_fetch_array($result0). $result wird standartmäßig als "Ergebnis definiert", zur "0" weiter unten!
row => steht für die Variable, in welche die Ergebnisse der Abfrage gelegt werden $row0 (hier gilt das selbe wie für $result0)
open => hiermit definieren wir das Öffnen der Schleife
0 => einfach ein Label (durchgehende Nummerierung ineinander verschachtelter Schleifen), das es ermöglicht auch verschachtelte Schleifen zu bauen

jetzt haben wir die Schleife geöffnet, natürlich muss sie auch geschlossen werden:
array:row:close:0

also hätten wir jetzt folgendes Konstrukt:
while ($row0 = mysql_fetch_array($result0)) {

} Wie man sieht, ist man so in der Lage, sich auch komplexe Schleifenstrukturen zu bauen:

array:row:open:0
Username
array:row:open:1
hobby
array:row:close:1
array:row:close:0

Hier hätte ich eine While-Schleife in einer anderen While-Schleife, die Variablen wären differenziert ansprechbar (durch das Label) und ich könnte jederzeit auf die Variablen beider Schleifen zugreifen Ein Beispiel für das obere Konstrukt wäre z.B.: Ich lasse mir alle User auflisten, und zu jedem User sein(e) Hobby(s).

Natürlich kann man sich viele weitere Dinge einfallen lassen, allerdings sollte man sich vorher recht genau vorstellen können, was brauche ich an Templatefunktionen und vor allem, wie bringe ich möglichst viele Dinge unter einen Hut! Es bringt schließlich nichts, wenn man von zig Platzhaltern erschlagen wird, wenn man einige hätte zusammenfassen können (wie bei den Schleifen, 1=> while, 2=> for, etc...) Ein weiteres Kriterium ist auch, dass man ja das Templatesystem entwickelt hat, um Leuten ohne Programmierkenntnissen eine Zusammenarbeit durch Aufgabenteilung zu ermöglichen! Was habe ich davon, wenn ich meinen Designer mit kryptischen Templatecodes in den Wahnsinn treibe, wenn er PHP eh schon für eine antike Sprache hält ;)

Die Arbeit die der Parser verrichtet ist in erster Linie Stringbearbeitung, die Interpretation des Codes und die Ausführung des Codes als PHP-Code. Das Handwerkszeug für die Stringbearbeitung sind Reguläre Ausdrücke und die PHP-Funktion eval(). Wer ins Manual schaut wird dort lesen, dass diese Funktion den an sie übergebenen String als PHP-Code ausführt. Abgesehen von der Tatsache, dass der übergebene Code syntaktisch korrekt sein muss kommt dem Sicherheitsaspekt hierfür eine große Bedeutung zu, schließlich will man ja nicht, dass die User PHP-Code auf dem eigenen Web ausführen können. Deswegen ist während der Arbeit am Templatesystem darauf zu achten, dass keine Sicherheitslücken durch Variablen entstehen, durch die der User Code zur Interpretation eingeben kann. Zu den Regulären Ausdrücken ist zu sagen, dass man sich hauptsächlich auf das Finden der Platzhalter und deren Umsetzung in PHP-Code befasst. Funktionen wie str_replace und andere Stringfunktionen eignen sich für den Einsatz in Templates selten und wenn, dann meistens nur in speziellen Fällen, da man Kriterien zum Finden/Bearbeiten/Ersetzen nicht allgemein vorgeben kann, sonder nur fest definieren kann. Man kann mit Schleifen und Suchkriterien die Stellen im String finden, an der das gewünschte Zeichen steht, aber wer schreibt freiwillig X Zeilen, wenn man es in einer erledigen kann ;).

Navigation -> Seitenanzahl : (4)

  «  1 2 3 4  » 
Kommentare zum Tutorial
Tutorial kommentieren
 
Über den Autor
mortalan@

mortalan@

Status
Premium Mitglied

Beruf
Unbekannt

Mitglied seit:
30.04.2009

letzte Aktivität
04.06.2009

 

Tutorial bewerten

Hat Ihnen dieses Tutorial gefallen? Dann bewerten Sie es jetzt! Fünf Sterne bedeutet "Sehr gut", ein Stern "Unzureichend".



 

aktuelle Artikel

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Neu | Berni

Wissensbestand in Unternehmen

Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Neu | Berni