noname: Templatesystem

Beitrag lesen

endlich mal ein interessanter beitrag.

also: der parser ist selbst in z.b. php gebastelt, und hat die aufgabe, die eingestreuten template-tags in gültige (php) anweisungen umzuwandeln. das ist die arbeitsweise der gängigen templates. daher muß der parser laufen. ich selbst halte nichts von templates, da diese nur zusätzliche cpu zeit verbraten, und zudem in templates selbst oft programmlogik und darstellung gemixt wird.

ich empfehle folgende vorgehensweise:

1. in der index.php stehen 2 requires: z.b. seite.php und seite.htm

2. in der seite.php befindet sich die komplette applikationslogik

3. in der seite.htm befindet sich die darstellungslogik

am besten erzeugt die seite.php ein objekt der klasse seite, welche die daten und methoden beinhaltet. auf diese kann dann in seite.htm bezug genommen werden.

vom browser:
Eingabe => (Array)
  [Seite] => Liste
  [Aktion] => suchen
  [Sortierung] => Array
   [Bezeichnung] => DESC
   [Preis] => ASC

in index.php:
require 'seite.php
Ausgabe = new Liste(Eingabe)
require 'seite.htm'

in seite.php:
class Liste
    var Tabelle = array()
    function Liste(Eingabe)
     this->Tabelle = Zeile::erstelleListe(Eingabe[Sortierung])

class Artikel
    var Bezeichnung
    var Preis
    function Artikel(ID)
     this->Bezeichnung = Radio
     this->Preis = 123
    function erstelleListe(Sortierung)
     Tabelle = array()
     Tabelle[] = new Artikel(Radio)
     Tabelle[] = new Artikel(Motor)
     return Tabelle
    function zeigeWert(Attribut)
     echo this->Attribut

ausgabeobjekt:
Ausgabe => Liste(Object)
  [SeitenAnzahl] => 5
  [Sortierung] => Array
   [Bezeichnung] => DESC
   [Preis] => ASC
  [Tabelle] => (Array)
   [0] => Zeile(Object)
    [Bezeichnung] => Radio
    [Preis] => 123
   [1] => Zeile(Object)
    [Bezeichnung] => Motor
    [Preis] => 3456

seite.htm:
foreach (Ausgabe->Tabelle as Zeile)
   <TD>Zeile->zeigeWert(Bezeichnung)</TD>
   <TD>Zeile->zeigeWert(Preis)</TD>
  endforeach