mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 00:49 Benutzername: Passwort: Auto-Login

Thema: [php] Beratung PHP Template Engine vom 15.02.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [php] Beratung PHP Template Engine
Autor Nachricht
phpler
Threadersteller

Dabei seit: 15.02.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 15.02.2007 01:35
Titel

[php] Beratung PHP Template Engine

Antworten mit Zitat Zum Seitenanfang

Hallo erstmal!

Ich bin noch ziemlich neu auf dem PHP-Sektor und wollte mal wissen was Profis zu meiner Template-Klasse sagen. Wäre nett wenn ihr mir sagen könntet was ich noch verbessern bzw. anders machen könnte.

template.php
Code:
<?php

   class Template
   {
        function readInFile($document)
        {
         if( ! file_exists($document) )
         {
            // Datei existiert nicht also Fehler.
            return FALSE;
         }
         else
         {
            // Wir lesen die Datei in ein Array.
            $doc = file($document);
            return $doc;
         }
      }

      function getBlocks( $file )
      {
         $doc = $this->readInFile( $file );
         $row = 0;
         foreach( $doc as $docLine )
         {
            if( preg_match_all("#<!--BEGIN (.*)-->#siU", $docLine, $line ) )
            {
               $zeiger[] = $line[1][0];
            
               $blocks[$line[1][0]][start] = $row+1;
            }
            if( preg_match_all("#<!--END (.*)-->#siU", $docLine, $line ) )
            {
               $blocks[$line[1][0]][ende] = $row;
            }
            $row++;
         }
         foreach( $blocks as $key=>$value )
         {
            for($i=$value[start];$i<$value[ende];$i++)
            {
               // Entfernt die Block Definitionen
               if( preg_match("/<!--.*?-->/", $doc[$i], $zombie ) )
               {
                  // nichts passiert
               }
               else
               {
                $lines .= $doc[$i];
               }
            }
            $blocks[$key][content] = $lines;
            $lines = '';
         }
         return $blocks;
         
      }
      function getNestedBlocks( $file )
      {

         $doc = $this->readInFile( $file );
         $row = 0;
         foreach( $doc as $docLine )
         {
            if( preg_match_all("#<!--_BEGIN (.*)-->#siU", $docLine, $line ) )
            {
               $zeiger[] = $line[1][0];
            
               $blocks[$line[1][0]][start] = $row+1;
            }
            if( preg_match_all("#<!--_END (.*)-->#siU", $docLine, $line ) )
            {
               $blocks[$line[1][0]][ende] = $row;
            }
            $row++;
         }
         foreach( $blocks as $key=>$value )
         {

            for($i=$value[start];$i<$value[ende];$i++)
            {
               $lines .= $doc[$i];
            }
            $blocks[$key][content] = $lines;
            $lines = '';
         }
         return $blocks;
         
      }
               
   }
?>


Beispiel Templatedatei
Code:
<!--BEGIN TEST-->
     Irgendwelcher Text hier
     <!--_BEGIN EINGEBETTET-->
          Text oder Tabelle für z.B. einen Loop
     <!--_END EINGEBETTET-->
     Noch mal Text, Bilder etc
<!--END TEST-->
<!--BEGIN TEST2-->
     Irgendwelcher Text hier
     <!--_BEGIN EINGEBETTET2-->
          Text oder Tabelle für z.B. einen Loop
     <!--_END EINGEBETTET2-->
     Noch mal Text, Bilder etc
<!--END TEST2-->



Danke für eure Hilfe!
  View user's profile Private Nachricht senden
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Do 15.02.2007 09:56
Titel

Antworten mit Zitat Zum Seitenanfang

Nennt sich Sigma:
http://pear.php.net/package/HTML_Template_Sigma

Hat auch der olle Koehntopp in seiner PHPLib drin:
http://pear.php.net/package/HTML_Template_PHPLIB

Also, wozu das Rad neu erfinden?


Zuletzt bearbeitet von tacker am Do 15.02.2007 09:58, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
phpler
Threadersteller

Dabei seit: 15.02.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 15.02.2007 11:05
Titel

Antworten mit Zitat Zum Seitenanfang

Danke erstmal für die Links. Ich habe mich noch nicht mit PEAR beschäftigt werde das aber mal zu gegebener Zeit in Angriff nehmen.

Prinzipiell hast du mit "das Rad neu erfinden" schon recht, jedoch finde ich das etwas "Eigenes" zum Anfang einen

    mit Stolz erfüllt Grins
    man Zusammenhänge besser verstehen lernt ( *Schnief* *hu hu huu* <-- Schuld! Menno! Jo! *Huch* *Thumbs up!* *Whaazzzz uppp?* )
    Tipps für effektiveres Scripten erhalten kann
    man frei ist von jeglichen Copyright Bestimmungen anderer


Gerade bei Punkt 3 fällt einem Neuling immer wieder auf, dass man es auch kürzer schreiben kann. Also wenn du mir irgendwelche Tipps zu meinem Code geben könntest wäre ich dir/euch sehr dankbar!
  View user's profile Private Nachricht senden
Account gelöscht


Ort: -
Alter: -
Verfasst Do 15.02.2007 21:54
Titel

Antworten mit Zitat Zum Seitenanfang

Schreib lieber direkt nen ordentlichen Parser mit Start- und Endtoken, um auch beliebig tiefe Hierarchien abgreifen zu können. Also ich hab mich auch mal ne Weile damit beschäftigt, ist echt witzig damit rumzuexperimentieren.

Zuletzt bearbeitet von am Do 15.02.2007 21:56, insgesamt 1-mal bearbeitet
 
magicslider

Dabei seit: 04.02.2007
Ort: WW
Alter: -
Geschlecht: Männlich
Verfasst Do 15.02.2007 23:51
Titel

Antworten mit Zitat Zum Seitenanfang

smarty wäre noch als alternative zu nennen...
  View user's profile Private Nachricht senden
phpler
Threadersteller

Dabei seit: 15.02.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Fr 16.02.2007 00:43
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo XSchinkenX!

Du meinst so wie HTML-Befehle?

Code:
<Block>
   <Unterblock_1>
      Text blabla
      <Unterblock_2>
         Noch mehr Text etc.
      </Unterblock_2>
   </Unterblock_1>
</Block>


Oder verstehe ich dich jetzt falsch?
  View user's profile Private Nachricht senden
 
Ähnliche Themen Looking For PHP Template Engine
smarty template engine > installieren ...?
joomla template in ein html/css template konvertieren?
Corel X3 PDF Engine
Rewriting Engine - URL Forwarding
C++: Template in Template-Funktion nutzen
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.