Ik ben bezig met een simpele template engine waarbij er codes als {TITLE} worden omgezet naar hun echte inhoud. De link tussen de code en de inhoud wordt geregistreerd in een associatieve array. De inhoud wordt genoteerd in de vorm van een functie, dit gebeurt als volgt:
Bij het parsen van de template, worden de keywords d.m.v. een reguliere expressie vervangen door de daaraan gekoppelde functie:
Maar nu het probleem. De functie ShowTitle() staat in een include en wordt geladen in de pagina waar ook een instance van de template-class wordt aangemaakt. De bovenstaande code is afkomstig uit die class. Het probleem is dat de functie showTitle() dit netjes ge-include wordt niet binnen de scope van de class valt, met als gevolg dat ik geen output krijg uit die functie (maar vreemdgenoeg ook geen foutmelding).
Wat is hiervoor de oplossing?
PHP:
4
| $keywordArray = array("TITLE" => "showTitle(" . $pageID . ");"); |
Bij het parsen van de template, worden de keywords d.m.v. een reguliere expressie vervangen door de daaraan gekoppelde functie:
PHP:
4
5
6
7
| if(preg_match("/^(.*)" . $keyword . "(.*)$/", $codeArray[$i])) { $tempOutput = eval($function); // $function is de variabele met als waarde de functie-aanroep. $codeArray[$i] = preg_replace("/^(.*)" . $keyword . "(.*)$/", "\\1" . $tempOutput . "\\2", $codeArray[$i]); } |
Maar nu het probleem. De functie ShowTitle() staat in een include en wordt geladen in de pagina waar ook een instance van de template-class wordt aangemaakt. De bovenstaande code is afkomstig uit die class. Het probleem is dat de functie showTitle() dit netjes ge-include wordt niet binnen de scope van de class valt, met als gevolg dat ik geen output krijg uit die functie (maar vreemdgenoeg ook geen foutmelding).
Wat is hiervoor de oplossing?
[ Voor 8% gewijzigd door Verwijderd op 11-07-2003 16:49 ]