login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Push vs Pull templates

Offline Fenrir - 19/06/2005 11:45
Avatar van FenrirPHP expert Eerst leg ik uit wat het zijn:

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:

  1. <?php
  2.  
  3. $tpl = new Template();
  4. $tpl->assign('titel', 'de titel van de pagina'); // Push de titel in de template-engine
  5.  
  6. ?>


Pull-Templates
Nu de pull-templates. Hierbij "trekt" het templatebestand de data uit een class. Dus dat gaat ongeveer zo:

  1. <?php
  2.  
  3. class PullVoorbeeld
  4. {
  5. function GetTitle()
  6. {
  7. return 'dit is de titel van de pagina';
  8. }
  9. }
  10.  
  11. ?>


En dan template:

  1. <?php
  2. $data = new PullVoorbeeld();
  3. ?>
  4. <html>
  5. <head>
  6. <title><?=$data->GetTitle()?></title>
  7. </head>
  8. //...
  9. </html>


Bij dit voorbeeld is het nogal raar om zoiets te doen. Maar als je een lijst met forumtopics moet weergeven kan dat zo:

  1. <?php
  2.  
  3. class PullVoorbeeld
  4. {
  5. function ListTopics()
  6. {
  7. return DB::Select('SELECT * FROM topics'); // Hier dan je databaselayer
  8. }
  9. }
  10.  
  11. ?>


  1. <?php
  2. $data = new PullVoorbeeld();
  3. ?>
  4. <html>
  5. <body>
  6. <ul>
  7. <?php
  8. $topics = $data->ListTopics();
  9. foreach($topics as $topic):
  10. ?>
  11. <li><?=$topic['title']?></li>
  12. <?php endforeach; ?>
  13. </ul>
  14. </body>
  15. </html>


Wat lijkt jullie beter? Push / Pull?

15 antwoorden

Gesponsorde links
Offline Legolas - 19/06/2005 11:48
Avatar van Legolas Onbekend 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...

hopelijk snap je me;-)
Offline nemesiskoen - 19/06/2005 11:50
Avatar van nemesiskoen Gouden medaille

PHP expert
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
Offline Rens - 19/06/2005 11:50
Avatar van Rens Gouden medaille

Crew algemeen
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.
Offline Fenrir - 19/06/2005 11:52 (laatste wijziging 19/06/2005 11:55)
Avatar van Fenrir PHP expert @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.
Offline Legolas - 19/06/2005 11:58
Avatar van Legolas Onbekend @Fenrir:
men gebruikt het weinig, omdat je bijv. moet weten hoe classes werken, e.d., wat velen niet weten...

Veel (domme) webmasters lezen dan alleen 1 keer die TemplatePower handleiding door en zijn zeg maar klaar...

Offline XenoX - 19/06/2005 12:01
Avatar van XenoX Gouden medailleGouden medaille

PHP expert
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 ...
Offline Thomas - 19/06/2005 12:09 (laatste wijziging 19/06/2005 12:10)
Avatar van Thomas 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 ?
Offline nemesiskoen - 19/06/2005 12:12
Avatar van nemesiskoen Gouden medaille

PHP expert
Citaat:
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.

Ben ik dan dom? Of misschien bedoel je naïef?
Offline Legolas - 19/06/2005 12:44
Avatar van Legolas Onbekend @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:)
Offline Fenrir - 19/06/2005 12:45 (laatste wijziging 19/06/2005 12:50)
Avatar van Fenrir PHP expert
Citaat:
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.
Offline Maarten - 19/06/2005 12:57
Avatar van Maarten Erelid 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 

Wel intressant discussiepunt 
Offline Thomas - 19/06/2005 13:15
Avatar van Thomas Moderator 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 ?).
Offline Fenrir - 19/06/2005 13:54
Avatar van Fenrir PHP expert
Citaat:
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.
Offline Maarten - 19/06/2005 14:02
Avatar van Maarten Erelid Njah als er dan ook zo'n systeem is dan maakt het eigenlijk geen hol uit 
Offline Fenrir - 19/06/2005 21:00 (laatste wijziging 19/06/2005 21:01)
Avatar van Fenrir PHP expert @Murfy: wat bedoel je? Wat maakt geen hol uit?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.226s