Fortgeschrittene - Freitag, Februar 22, 2008 16:21

Template Parser mit PHP

ieses Tutorial zeigt euch wie ihr mit nur wenig Aufwand eure eigene Templates Dateien benutzt und variable Werte einfügen könnt. Dazu schreibe ich erstmal eine sehr kleine Templates Klasse die mir nur das Laden einer Datei übernimmt.

<?php 
class tpl 

    function 
get($name
    { 
        
$filename=“/tpl/$name.tpl”
        
$fd=fopen($filename,“r”); 
        
$co=fread($fd,filesize($filename)); 
        
fclose($fd); 
        return 
$co
    } 

$tpl = new tpl
?>

Wie ihr erkennen könnt brauchen wir einen neuen Ordner namens “tpl” in denen wir alle unsere Templates im Format “name.tpl” reinspeichern. Als Beispiel nehme ich drei Dateien:

-head.tpl
-body.tpl
-foot.tpl

Der Inhalt der Dateien

head.tpl

<html> 
    <head><title>{title}</title></head> 
    <body>

body.tpl

Heute ist der {datum}! Wir haben {uhr} Uhr.

foot.tpl

</body> 
    </html>

Es ist nicht viel Inhalt in diesen Datei, doch es reicht um das Verständnis dieses Tutorials zu vermitteln. Wie ihr sicher bemerkt habt, gibt es so genannte Platzhalte in diesen Dateien. Diese Platzhalter habe ich mit einer geschweiften Klammer gekennzeichnet.

Jetz brauchen wir eine PHP Datei die alle drei Templates öffnet und in einer Variable Speichert. Zum Glück haben wir ja vorher die Klasse geschrieben. Diese erleichtert uns nun eine menge Schreibarbeit.

<?php 
    
// Lade der Template Klasse: 
    
require “templates_class.php”

    $head $tpl->get(“head”); 
    
$body $tpl->get(“body”); 
    
$foot $tpl->get(“foot”); 

    // Variablen zusammenfassen 
    
$output $head.$body.$foot

    echo $output
?>

Nun haben wir es fast geschafft. Doch das Wichtigste fehlt leider! Unsere Platzhalter sind immer noch unverändert. Wir könnten nun ganz einfach mit den Befehl str_replace() unsere Variablen austauschen… Doch das bringt uns leider viel zu viel Arbeit! Wir schreiben eine universelle Lösung die überall platz findet und keiner Modifikation bedarf - egal wie sich das Projekt entwickelt.

Wir erstellen eine Datei namens parse.php und schreiben folgendes hinein:

<?php  
    $gesamt
=preg_match_all(“/\{([^.\}]*)\}/i”,$ipost,$ergebniss); 
    for(
$g=0;$g<$gesamt;$g++) 
    { 
        
$new=str_replace(“{”,“”,$ergebniss[0][$g]); 
        
$new=str_replace(“}”,“”,$new); 
        
$ipost=str_replace($ergebniss[0][$g],$$new,$ipost); 
    } 
?>

Was diese Datei nun in einzelnen macht ist schnell erklärt. Zu Beginn suchen wir alle Platzhalter über ein Regulären Ausdruck. In der For Schleife gehen wir nun alle gefundenen Namen durch und ersetzen diesen Namen mit der gleichnamigen Variable! Jetzt brauchen wir nur noch unsere Index Datei anpassen und wir sind fertig!

<?php 
    
// Lade der Template Klasse: 
    
require “templates_class.php”

    $head $tpl->get(“head”); 
    
$body $tpl->get(“body”); 
    
$foot $tpl->get(“foot”); 

    // Variablen zusammenfassen 
    
$output $head.$body.$foot

    $title “Meine Homepage”
    
$datum “22.05.2005″
    
$uhr “22.23 Uhr”

    // Variablen parsen! 
    
$ipost $output
    require 
“parse.php”
    
$output $ipost
     
    
// Ausgabe 
    
echo $output
?>

Damit wären wir fertig! Ich hoffe das mit diesen zwei Grundfunktionen nun auch ihr auf ein Template System umsteigt. Den es ist einfach Sauberer PHP Code mit HTML zu trennen.



1 Kommentar
RSS Feed der Kommentare | Kommentieren | Trackback

Webagentur
Aug 19, 2008 1:27

Nicht schlecht … werde ich gleich mal testen … Danke!

Kommentieren

wichtige Artikel