pb-tpl

Autor: Peter Bieling © 2004-2008 - Downloadpaket

Eine einfache aber effektive PHP-Template-Klasse

Diese kleine Templateklasse mit ihren nur etwa 100 Zeilen Code (ohne Kommentare) hat alles, was nötig ist, um PHP-Code und (X)HTML so zu trennen, dass eine problemlose Kooperation von Programmierer und HTML-Autor möglich ist. Auch wer beides in einer Person ist, wird schnell merken, wie sich die Anwendung dieses Templatekonzepts positiv auf Übersicht und Entwicklungsgeschwindigkeit auswirkt.
Auf Logik im Template wird komplett verzichtet. Blöcke werden nicht ineinander verschachtelt dargestellt, sondern untereinander aufgeführt, was die Übersicht erhöht. HTML-Kommentare dürfen bleiben, was sie sind, und dienen nicht als Steuerzeichen für Loops.
Die Kommentierung der Templates ist fast genauso leicht möglich, wie die des PHP-Codes.
Diese Templateklasse ist in meinen Projekten seit mehr als drei Jahren im Einsatz und hat sich dort bestens bewährt.
Die Funktionsweise sollte anhand der kommentierten Beispiele deutlich werden.

Beispiel 1

PHP-Quellcode für Beispiel 1:


<?php
// Einbindung der Templateklasse:
require_once("pb-tpl.php");
// Instanz der Klasse erzeugen:
$t = new pb_tpl("templates/test1.tpl");

//Die Zuordnung von Variablen und Platzhaltern über
//Key-Value-Paare ist nur eine Methode.

$sere = array (
   "title" => "Startseite vom pb-tpl-Tutorial",
   "headline" => "PHP-Templates einfach aber effektiv.",
   "subline" => "Für alle die den Durchblick behalten wollen.",
   "text" => "Diese Template-Klasse verzichtet auf Logik im Template. Dies
               ist natürlich nur ein ganz einfaches Beispiel. Auf der nächsten
               Seite zeigen wir, wie Daten-Reihen verarbeitet werden können.",
   "autor" => "Peter Bieling",
   "datum" => "25.11.04"
   );

//Die Ausgabe der Seite ist ganz einfach:
echo $t->fill_tpl("main", $sere);
?>

Das Template für Beispiel 1


# Die Reihenfolge der Templates ist im Prinzip egal, da sie in ein assoziatives Array
# eingelesen werden.

# Soll eine Zeile ignoriert werden, beginnt sie mit
# Raute oder
; Semikolon. Leere Zeilen werden ebenfalls übersprungen.
# Wird eine Leerzeile benötigt, z.B. für pre-Text oder Textdateien, muss ein
# einzelnes ! Ausrufezeichen in der leer darzustellenden Zeile stehen.

    # Whitespace vor dem Kommentarzeichen ist erlaubt.

Kommentierung                # in der selben Zeile wird nicht unterstützt.
Vor dem ersten Template-Bezeichner (z.B. [main]) können die Kommentarzeichen auch
weggelassen werden. Ich empfehle aber, sie zu setzen.

# Die Benennung der Templates erfolgt in eckigen Klammern in einer eigenen Zeile
# Whitespace davor und danach wird ignoriert.
# Das Template endet mit der Benennung des nächsten Templates bzw dem Seitenenede.

# Für besondere Fälle, in denen als erstes Zeichen (Whitespace ausgenommen) ein Kommentarzeichen
# stehen muss oder soll (z.B. bei Perl-Code-Kommentaren oder bei CSS-Selektoren), muss das Zeichen
# mit Backslash maskiert werden:
\# Der Backslash wird automatisch entfernt und die übrige Textzeile bleibt erhalten:

\#newsbox {position:absolute; ... usw. }

#Das gleiche gilt auch für Zeilen, die mit [ beginnen und mit ] enden:
\[b]BB-Code soll nicht als Template-Bezeichner angesehen werden[/b]
# und wird daher mit Backslash geschützt.

################ Jetzt aber los:

# Haupttemplate. Ich nenne es normalerweise "main".
[main]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
# Platzhalter werden in geschweifte Klammern gesetzt:
<title>{TITLE}</title>
</head>
<body>
<h1>{HEADLINE}</h1>
<h2>{SUBLINE}</h2>

<p>{TEXT}</p>
<hr noshade size="1">
Autor: {AUTOR} - Datum: {DATUM}
</body>
</html>

Ergebnis ansehen