phpbar.de logo

Mailinglisten-Archive

[php] Bedeutung von Template-Klassen/Engines in der PHP-Programmierung

[php] Bedeutung von Template-Klassen/Engines in der PHP-Programmierung

Peter Bieling network at media-palette.de
Mon Mai 31 14:39:59 CEST 2004


Redaktion ''Der CMS-Report'' wrote:

>>Schneller wird's wohl kaum gehen.
> 
> Da kann ich nicht widersprechen. Und packst Du dann wenigstens die
> elementare String-Verarbeitung in eine Klasse?

nein, bisher nicht. Ich mache mir die Sache aber durch einen Trick etwas 
übersichtlicher.

Hier etwas Beispielcode aus einem aktuellen Mailer-Skript:
(Die Variablen $missing und $confirmation bezeichnen Blöcke für 
Fehlermeldung bzw. ein Bestätigungsformular. Eine Variable enthält also 
einen Leerstring.)
======================
...
//Platzhalter => Ersetzungsstrings zuordnen
$sere['{MISSING}'] = $missing;
$sere['{ACTION}'] = $_SERVER['PHP_SELF'];
$sere['{CONFIRMATION}'] = $confirmation;

//Template einlesen
$form_template= file_get_contents("templates/form.tpl");

//Template füllen und ausgeben
echo str_replace(array_keys($sere), array_values($sere), $form_template);
...
=========================
Ich arbeite in diesem Beispiel erst mit einem gemeinsamen Array, damit 
man die Übersicht nicht verliert, danach splitte ich es in zwei Arrays 
auf. Bei drei Werten ist das nicht unbedingt nötig, aber bei 20 freut 
man sich.

Wenn man die Variablen schon in einem Hash bekommt, kann man die 
Ersetzungsmuster auch generieren.

foreach ($fields as $k => $v) {
     $search[]='{'. strtoupper($k) . '}';
     $replace[] = $v;
}

Für $fields['name'] wird dann ein {NAME} als Platzhalter erwartet.

Ich glaube nicht, dass sich bei diesem Verfahren noch viel in eine 
Klasse auslagern ließe. Bei der Verwendung einer Klasse bekomme ich eher 
mehr statt weniger Code.
Was eine Klasse halt bieten kann, ist die Prüfung des Templates auf 
fehlende Werte oder die Entfernung nicht benötigter Blöcke usw. Häufig 
braucht man so etwas aber gar nicht, und dann frage ich mich, warum man 
nicht direkt mit PHP-Funktionen arbeitet.

Viele Grüße

Peter




php::bar PHP Wiki   -   Listenarchive