Archief - DISCUSSIE: template engine, andere aanpak

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

FluX.iccd

Legacy Member
Ik ben al een eindje op zoek naar een persoonlijke stijl en methode voor php die ik in het vervolg ga gebruiken.

Blijkbaar worden templates veel aangeraden, om de html-code en php code te scheiden en overzichtelijker te maken. Tags in de vorm van {var} worden dan met preg_replace() vervangen door de juiste inhoud.

Sommige engines gaan daar redelijk ver in en hebben zelfs eigen lus-structuren enzo, eigenlijk wordt er dus een nieuwe script-taal gemaakt, die door php geparsed wordt.


Maar ik heb nu ook het volgende artikel gevonden: http://www.massassi.com/php/articles/template_engines/

De auteur gebruikt ipv {}-achtige syntax gewoon de zuivere php code in zijn templates: vb <?=$var?> ipv {var}. Door de variabelen op voorhand goed te zetten en de template op een handige manier te includen wordt die php code geparsed, en bekomt men hetzelfde resultaat als met de oude methode.
Het voorbeeld in het artikel maakt alles duidelijk :)

Volgens de auteur is het ook niet de bedoeling alle php code van de html code te scheiden, maar er wel voor te zorgen dat de "moeilijke" php code gescheiden is van de 'presentatie' code die bij de html code hoort.


Ik zie op dit ogenblik alleen maar voordelen in deze methode, maar mijn zoektocht duurt nog niet lang, dus nadelen gaan er wel zijn...

Uw mening graag :)

glox

Legacy Member
Een template engine is een zeer handig iets, maar het grote nadeel is de overhead die ontstaat. Door een beperkte template engine te nemen, vermeid je dit al deels. Indien je de 2e methode gebruikt (dus <?=$var?>) vermeid je deze overhead al grotendeels, zeker met accelerators.

Iets dat ik toepas, is een class die basisinhoud genereert zonder dat er eigelijk templates voor nodig zijn. Aangezien veel inhoud van sites toch dezelfde opbouw heeft. Ik spreek dan over dingen als $template->add_section('registreer'); $template->add_form('registerform') enz. Voor de meer geavanceerde dingen (en de achterliggende werking) wordt dan weer wel een template engine gebruikt.

En nog een kleine side-note:
Om je code portable te houden gebruik je beter niet de <?=$var?> syntax maar <?php echo $var; ?> aangezien de <?= syntax niet werkt met short_tags uit.

PC_Freak

Legacy Member
Savant is een template engine die gebruik maakt van plain PHP voor de templates. Uiteindelijk doet Smarty dit ook door de templates zoiezo te compileren naar PHP en te cachen.

FluX.iccd

Legacy Member
Ik ben er nu al een paar dagen mee bezig, en deze methode valt heel goed mee tot nu toe, veel mogelijkheden.

Ik laat dingen zoals forms en controls overerven van de template klasse.

Geen idee of ik goed bezig ben maar ik zie wel waar ik uit kom :p
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan