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