Community

9dots.de Webdesign Board

 

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 

 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 


[Snippet] Templateklasse

 
Neues Thema eröffnen   Neue Antwort erstellen    9dots.de Webdesign Community Foren-Übersicht -> Coding-Tutorials
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Impi
Mitglied
Mitglied


Angemeldet: 06.05.2006
Beiträge: 530


BeitragVerfasst am: 26.08.2006, 12:07    Titel: [Snippet] Templateklasse Antworten mit Zitat
So, ich habe hier mal wieder ein super Klasse für euch in meiner Trickkiste gefunden Smilie.

Die Klasse filtert den Inhalt der angegebenen Datei auf Keywords die in einem Array bestimmt sind und ersetzt den Wert der Platzhalter entweder durch einen Text oder den Inhalt einer Datei.

So sieht die Klasse aus:

Code:

<?PHP
class template{
   #Klassenvariablen
   var $strFilename = "";
   var $arrayValues = array ();
   var $strTPL = "";   
   #Ende
   
   #Konstrunktor
   function template($path,$filename,$values){
   // Inhalt der zu parsenden Templatedatei wird in $tpl gespeichert und die HTML-Atribute
   // an den Pfad zum $filename angepasst.
   $tpl = implode ("",file($path.$filename));
   $tpl = preg_replace ("=background\=\"(?!http)(.*?)\"=si","background=\"".$path."\\1\"", $tpl);
   $tpl = preg_replace ("=src\=\"(?!http)(.*?)\"=si","src=\"".$path."\\1\"", $tpl);

   // &Uuml;bermittelte Werte werden den Klassenvariablen zugewiesen
   $this->strTPL = $tpl;
   $this->strFilename = $filename;
   $this->arrayValues = $values;   
   }   
   #Ende

   // Function die den neuen Text/HTML-Code als Return zur&uuml;ck gibt
   function startParsing(){
   // Jeder Eintrag der $arrayValues array(); wird durch die kommende Schleife gejagt
   foreach ($this->arrayValues as $value_1 => $value_2) {
   
      if(file_exists($value_2)){      // Wenn der 2te Spaltenwert von $arrayValues eine Datei ist und existiert ...
      ob_start();            // Wird ein Puffer f&uuml;r die Ausgabe initialisiert ...
      include ($value_2);         // Die Datei in den Puffer includiert ...
      $value_2 = ob_get_contents();   // $value_2 bekommt ihren den Wert der ehemaligen Datei die in $value_2 verzeichnet war
      ob_end_clean();         // Und der Puffer wird wieder geschlossen und aufger&auml;umt
      };
      // Der Inhalt von $value_2 wird auf runde Klammern durchsucht und durch das passende HTML-Tag ersetzt
      $value_2 = str_replace ('{', "{", $value_2);
      $value_2 = str_replace ('}', "}", $value_2);
      // Die Klassenvariable mit dem Inhalt der Templatedatei wird erneuert bzw. der Platzhalter { .$value_1. } mit dem passenden Wert der zu includierenden Datei $value_2 ersetzt
      $this->strTPL = str_replace ('{' . $value_1 . '}', $value_2, $this->strTPL);
      }
      // Neuer Text/HTML-Code wird ausgegeben
      return $this->strTPL;
   }

   function killTemplate(){
   unset($this->strFilename);
   unset($this->arrayValues);
   unset($this->strTPL);
   }
};
?>


Wie immer ist alles kommentiert. Bei Fragen zu Klassen: [url=http://forum.9dots.de/viewtopic.php?t=3000]Guckst du hier ...[/url

Und so findet die Klasse verwendung:
Code:

<?PHP
// Die Klasse wird includiert
include("class_template.php");
// Die zu ersetzenden Werte werden bestimmt
$values = array (
'title'   => 'Titel',
'text'      => 'text.txt',
'hello'   => 'Hello World'
);
// Das Object $tpl wird mit der Klasse Template initialisiert
$tpl = new template("templates/","index.tpl", $values);
// Das Dokument wird geparst und ausgegeben
echo $tpl->startParsing();
// Der Dekonstruktor wird gestartet und das Object aus dem Speicher gel&ouml;scht
$tpl->killTemplate();
unset($tpl);
?>


Die zu ersetzende Datei liegt im Ordner "templates" und heisst "index.tpl".
Folgender HTML-Code ist enthalten:
Code:

<html>
<head>
      <title>{title}</title>
</head>
<body>
{hello}<br>
{text}
</body>
</html>


Die Ausgabe sieht dann so aus:
Code:

<html>
<head>
      <title>Titel</title>
</head>
<body>
Hello World<br>
Hier steht dann der Text!
</body>
</html>


Alle Dateien sind nochmal hier zu sehen: http://sevenstudios.info/files/SNIPPETS/PHP/KLASSEN/TEMPLATE/

Impi

P.S.: Die Platzhalter müssen im HTML-Code immer in {} Klammern stehen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    9dots.de Webdesign Community Foren-Übersicht -> Coding-Tutorials Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Board Software by phpBB © 2001, 2005 phpBB Group. Impressum
Dominik Wuttke - Moritz Münchmeyer - Joachim Nagel GbR.
AGB