Ik ben bezig met eigen framework, en heb een simpele template engine.
Include bestanden waar PHP echo's instaan, niet echt netjes maar het werkt.
Maar ik wil het uitbreiden zoals Smarty met smart tags, en ook looping e.d. inbouwen.
Nu kom ik alleen tot het punt hoe een template opbouwen.
Zoals meeste sites bestaat een template uit een header, een menu links en een footer.
Nu moet er code natuurlijk (dynamisch) geparsed worden in het menu, inlogde gebruiker e.d.
Maar hoe kan ik dit makkelijk verwerken? Wat ik nu heb:
lib/template.php bevat de template class.
index.php bevat alle php code voor de index, deze roept weer de template class aan:
Nu is het alleen lastig om hier modules in te verwerken, Header is een aparte functie die weer verwerkt is in de klasse.
Nu wil ik hier vanaf, ik wil geen functies meer in de hoofdklasse die te maken hebben met dynamische content.
Wat zou een makkelijke manier zijn om hier vanaf te stappen?
Include bestanden waar PHP echo's instaan, niet echt netjes maar het werkt.
Maar ik wil het uitbreiden zoals Smarty met smart tags, en ook looping e.d. inbouwen.
Nu kom ik alleen tot het punt hoe een template opbouwen.
Zoals meeste sites bestaat een template uit een header, een menu links en een footer.
Nu moet er code natuurlijk (dynamisch) geparsed worden in het menu, inlogde gebruiker e.d.
Maar hoe kan ik dit makkelijk verwerken? Wat ik nu heb:
lib/template.php bevat de template class.
index.php bevat alle php code voor de index, deze roept weer de template class aan:
PHP:
1
2
3
4
5
6
| $Template = new Template(); $Template->Title = 'Page title'; $Template->Set('TestText', 'text'); echo $Template->Header(); echo $Template->Fetch('index'); echo $Template->Footer(); |
Nu is het alleen lastig om hier modules in te verwerken, Header is een aparte functie die weer verwerkt is in de klasse.
PHP:
1
2
3
4
5
| function Header() { global $_USER, $_LANG; return $this->HeaderHTML().$this->Fetch('header'); } |
Nu wil ik hier vanaf, ik wil geen functies meer in de hoofdklasse die te maken hebben met dynamische content.
Wat zou een makkelijke manier zijn om hier vanaf te stappen?