Meine PHP Templateklasse.

18Okt20101

Rainer Schulz » vor Ewigkeiten am 18. Oktober 2010 um 13:21 » 2783 Klicks » 1 Kommentar

Screenshot 

Ich habe seit einiger Zeit immer mal wieder an meiner PHP-Templateklasse gearbeitet und diese meinen Bedürfnissen angepasst. Gestern habe ich die Klasse etwas Dokumentiert und zusammen mit einer PHP-Testdatei und einem kleinen Testtemplate in ein Ziparchiv gepackt um es euch zur Verfügung zu stellen.

Da ich mich nicht für Unfehlbar halte, kann es sicherlich sein, dass kleinere Fehler oder Bugs im Script existieren. Wenn Ihr einen Fehler findet, bitte ich euch diesen hier als Kommentar zu melden.

Die PHP-Templateklasse kann:

  • Platzhalter ersetzen

  • Schleifen verarbeiten

  • IF-Bereiche je nach Übergabeparameter anzeigen oder ausblenden

Hier nun die Details der Datei und der Downloadlink:

Hier die Klasse ohne Dokumentation:

class rsTPL
{
    public $file = null;
    public $tpl = null;
    public $preg = null;
    public $each = null;
    private $dat = null;

    public function outputPrint()
    {
        $this->dat = file_get_contents( $this->file );
        $this->dat = $this->parsePreg( $this->dat );
        $this->dat = $this->parseForeach( $this->dat );
        $this->dat = $this->parseTpl( $this->dat );

        return print( $this->dat );
    }

    public function outputString()
    {
        $this->dat = file_get_contents( $this->file );
        $this->dat = $this->parsePreg( $this->dat );
        $this->dat = $this->parseForeach( $this->dat );
        $this->dat = $this->parseTpl( $this->dat );

        return $this->dat;
    }

    private function parseForeach( $result )
    {
        if(isset( $this->each ) )
        {
            foreach( $this->each as $key => $value )
            {
                preg_match( "#\{FOREACH\|".$key."\}(.*?)\{ENDFOREACH\|".$key."\}#si", $result, $matches );
                $res = "";

                foreach( $this->each[$key] as $layerkey => $layervalue )
                {
                    $push = $matches[1];

                    foreach( $this->each[$key][$layerkey] as $detailkey => $detailvalue )
                    {
                        $push = $this->replaceKeys( $detailkey, $detailvalue, $push );
                    }

                    $res.= $push."\n";
                }

                $result = preg_replace( "#\{FOREACH\|".$key."\}(.*?)\{ENDFOREACH\|".$key."\}#si", $res, $result );
            }
        }

        return $result;
    }

    private function parsePreg( $result )
    {
        if(isset( $this->preg ) )
        {
            foreach( $this->preg as $key => $value )
            {
                if( $value ){ $value = "$1"; }else{ $value = ""; }
                $result = preg_replace( "#\{IF\|". $key."\}(.*?)\{ENDIF\|".$key."\}#si", $value, $result );
                if( !$value ){ $value = "$1"; }else{ $value = ""; }
                $result = preg_replace( "#\{IF\|!". $key."\}(.*?)\{ENDIF\|!".$key."\}#si", $value, $result );
            }
        }

        return $result;
    }

    private function parseTpl( $result )
    {
        if(isset( $this->tpl ) )
        {
            foreach( $this->tpl as $key => $value )
            {
                $result = $this->replaceKeys( $key, $value, $result );
            }
        }

        return $result;
    }

    private function replaceKeys( $key, $value, $result )
    {
        $result = str_replace( "{".$key."}", $value, $result );

        return $result;
    }
}

 

Schlagwörter »            

Über den Autor

 

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Diese Artikel könnten dich auch interessieren

 
  1. PHP Design Patterns: Das Registry Pattern » 02. Januar 2012
  2. Ausnahmebehandlung mit PHP » 01. Januar 2012
  3. Alter eines Zeitstempels mit PHP ermitteln » 04. Mai 2011
  4. Optimierung des Blogs mit PHP » 18. April 2011
  5. Objektorientierte Programmierung » 29. Oktober 2010

Kommentare zum Artikel

  • #1 » von Thosh » vor 4 Jahren am 04. Januar 2013 um 15:48

    Sieht gut aus, ich probiere mal, ob sie für mich taugt

Kommentar schreiben

markierte (*) Felder sind Pflichtfelder

E-mail wird nicht veröffentlicht

nur "http://" Adressen sind erlaubt