Push-Templates
Deze templates worden het meest gebruikt. TemplatePower is bijvoorbeeld een push-template-engine: de phpcoder "pusht" de data in de template-engine, en die geeft het weer. Je doet het dus zo:
Ik denk pull, want dat is overzichtelijker, en dan hoef je niet steeds assign te doen, met pull is het overzichtelijker, en met classes werk ik sowieso veel beter, sneller en efficiënter...
Beide lijken handig
hangt er vanaf in welke situatie je die wilt gebruiken.
Als je bv. van een volledig forum de layout wil laten bepalen en de coder en designer 2 verschillende mensen zijn is een Push-template aangeraden.
Wil je je nu als coder gaan verdiepen en logischere/snellere(minder typwerk, wss wel meer parsetijd) dan zijn Pull-templates aangeraden.
Ik moet toegeven dat ik nog nooit van die namen had gehoord en de methode van Pull-templates niet kende. Maar nu je ze zo uitlegt houd het wel steek.:p
Je werkt met push ook met classes, de TemplatePower class...
Ik vind de push methode beter.
Templates zijn er om de code en opmaak/html te scheiden.
En met pull ga je weer code in de opmaak/html zetten.
@legolas: Ja, ik denk ook dat pull beter is. Maar waarom gebruikt (bijna) niemand het?
Ik denk ook dat pull sneller is, want bij push stop je alle data in een template-object, en dat moet dan bewaard blijven. Bij pull gebruik je alleen de data die nodig is, en dus heb je minder geheugen nodig.
@rensjuh: ik denk dat templates niet bedoeld zijn om php/html te scheiden, maar om template-code van database-code (of andere code, bijvoorbeeld code voor een login) te scheiden.
En ik gebruik hier phpcode omdat er geen templateengine (voor zover ik weet) is die pull gebruikt. Maar je zou toch eenvoudig een aparte template-syntaxis kunnen maken voor pull-templates.
Ik vind push beter, omdat ik vind dat een templateparser de html en php gescheiden moet houden. Dus ook geen aparte template-sytaxis in html ...
Thomas - 19/06/2005 12:09 (laatste wijziging 19/06/2005 12:10)
Moderator
Tis maar net wat het doel is van je template-engine, en ik dacht dat het voornaamste doel van een template-engine scheiding van code en layout is. Bij het pull-model gaat je layout bepalen wat voor data er wordt afgedrukt, en dat lijkt mij juist een taak van de code die invulling aan de template geeft. Het pull-model is dus een template (met code) die zichzelf invult, terwijl in het push-model de template een soort van blauwdruk is voor de af te drukken data, maar hoe dit gebeurt, bepaalt de template niet zelf.
Als er meer template-engines met de push-methode zijn dan van de pull-methode, dan zal dat waarschijnlijk wel wat zeggen he ?
Citaat:
Veel (domme) webmasters lezen dan alleen 1 keer die TemplatePower handleiding door en zijn zeg maar klaar...
Ja, nou en ? If it works for you... In de praktijk zul je meestal niet zoveel tijd hebben om eens te mediteren op de beste methode om je site op te zetten, dus als iemand dat denkwerk al voor jou gedaan heeft, maar het is wat langzamer of whatever, so what ? Als jij een site bezoekt, kijk jij dan alleen naar de parsetime ?
Veel (domme) webmasters lezen dan alleen 1 keer die TemplatePower handleiding door en zijn zeg maar klaar...
Ik gebruikt TemplatePower voor een forum systeem dat ik aan het bouwen ben. Ik vind het handig, het werkt heel relaxt en het bespaart veel mooite als ik iets moet veranderen in de code/layout.
@nemesiskoen:
Natuurlijk ben jij niet dom, daar heb ik al genoeg bewijzen van gezien;-)...
Maar nu even serieus:p
Als je een goede reden hebt om met Templates via push te werken, dus wat jij zegt layout aanpassen, is dat inderdaad helemaal niet dom, in dat geval zou ik zelf ook push gebruiken, maar als je gewoon een systeem hebt, en werkt met Templates zonder reden, wat er een hoop doen, is dat gewoon dom, seems me:)
Ik vind push beter, omdat ik vind dat een templateparser de html en php gescheiden moet houden. Dus ook geen aparte template-sytaxis in html ...
Maar dat kan niet. Je moet óf php-code in je template zetten, óf een template-syntaxis, zoals bij templatepower:
<!-- START BLOCK : block -->
Citaat:
Tis maar net wat het doel is van je template-engine, en ik dacht dat het voornaamste doel van een template-engine scheiding van code en layout is.
Dat kan ook prima met pull. Je moet er wel eerst een template-engine voor maken.
Citaat:
Als er meer template-engines met de push-methode zijn dan van de pull-methode, dan zal dat waarschijnlijk wel wat zeggen he ?
Ik denk niet dat dat veel zegt. Niet veel mensen gebruiken uberhaupt template-engines. Dat zegt toch ook niet veel?
Als je kijkt naar push-tempate-engines dan zie je dit:
1. Je hebt een loop in je php-script die data uit de database haalt.
2. Je hebt een loop in je template die de data weergeeft.
Bij pull-templates is het zo:
1. Je hebt een loop in je template die de data weergeeft.
Dus dat is wel een + voor pull.
En je kunt denk ik dezelfde template-systaxis als TemplatePower gebruikt gebruiken voor pull-templates. Dan "compileer" je het naar php-code. Zo heb je een class die de data beschikbaar stelt, en je hebt je template. En hoef je maar 1 loop te gebruiken: in je template.
Ik ben zelf ook een voorstander van push, en ook om de reden die FangorN aanhaalde: op die manier houd ik mijn code netjes gescheiden van de php. ALs dat kan met pull, mij best, ik ben tevreden van die push, dus dan stap ik niet zo gauw over
Pull kan dan korter/beter zijn, het neemt de (eerste en voornaamste) reden waarom je een template-engine in de eerste plaats gebruikt (de reden dat ik in de eerste plaats een template-engine gebruik anyway) niet in acht, namelijk scheiding van code en layout.
Als efficiëntie een (hele) grote rol gaat spelen, kun je waarschijnlijk beter gebruik maken van pull (of helemaal geen template-engine ?).
niet in acht, namelijk scheiding van code en layout.
Jawel, alleen in mijn voorbeeld niet. Ik kon geen voorbeeld verzinnen met een template-engine, omdat die er niet is. Maar je kunt best een template-engine maken met pull, die de code/layout ook scheidt.
Ik zal eens kijken of ik dat kan maken.