Mailinglisten-Archive |
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