Avatar billede googolplex Novice
04. juli 2004 - 21:31 Der er 11 kommentarer og
1 løsning

Template Engines

Hej :)

Er der nogen der har erfaringer med Template Engines som eksempelvis Smarty eller patTemplate?

Er det noget der er værd at sætte sig ind i, eller skal man holde sig fra det og benytte XML/XSLT i stedet? (Ikke at jeg har forstand på det heller...)
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 21:38 #1
Jeg benytter Smarty med stor fornøjelse. Man kan også bare bruge PHP som
template maskine - ideen er at adskille de forskellige ting. Det kan man jo
også med XML o.lign.
Avatar billede googolplex Novice
04. juli 2004 - 21:44 #2
Ja, jeg har læst flere steder at PHP 'er' en template maskine, og at Smarty ol. bare tilføjer et unødigt ekstra lag, der komplicerer tingenen.

Derfor dette spørgsmål :)
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 21:47 #3
Det er ikke unødigt - man kan nemmere koncentrere sig om HTML og layout med den
syntaks, som Smarty anvender, og de funktioner man selv definerer. Det "unødvendige"
er den ekstra syntaks man skal lære, men hvad - een fra eller til ;)
Avatar billede googolplex Novice
04. juli 2004 - 22:08 #4
Et enkelt eksempel jeg ikke kan få helt ud af hovedet:

Smarty:

// Business code (index.php)
require_once('Smarty.class.php');
$smarty = new Smarty();
$smarty->assign('title', 'Template Engine Test');
$smarty->display('index.tpl');

// Presentation (index.tpl)
<html>
  <head>
    <title>{title}</title>
  </head>
  <body>
    <h1>{title}</h1>
  </body>
</html>

PHP:

// Business code (index.php)
$title = 'Template Engine Test');
include('index.tpl');

// Presentation (index.tpl)
<html>
  <head>
    <title><?php echo $title; ?></title>
  </head>
  <body>
    <h1><?php echo $title; ?></h1>
  </body>
</html>

Det er jo stort set det samme! Så hvad er fordelen så, bortset fra de fuktioner som Smarty indeholder?
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 22:15 #5
{$title} mener du :)

Du skal ikke dømme på så lille et eksempel. Se hvad jeg har et sted:

{simpletable}
French || English
cheval || horse
maison || house
souris || mouse
{/simpletable}

som laver en formatteret tabel med 4 rækker og 2 søjler - jeg har selv lavet den. Eller:

{thisiscode}
word=f2e("gosse")
if f2e.exists("gosse") then
  word="the key is there"
end if
{/thisiscode}

Det er også min egen. Skriv kodestumper ud i pænt format.
Avatar billede googolplex Novice
04. juli 2004 - 22:47 #6
Ja, det kan jeg godt se. Men man kunne vel ligeså godt:

$simpletable = mytablemakingfunction($array);

Og derefter <?php echo $simpletable; ?> ?

Når man begynder at bruge Smarty-betingelser, så begynder det jo også at skride lidt. gør det ikke?

Er der noget jeg har overset ?
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 22:53 #7
og hvor kommer $array så fra. Prøv at lave et helt eksempel.

Nej, det skrider ingen steder ;)
Avatar billede googolplex Novice
04. juli 2004 - 23:42 #8
$array = ('cheval' => 'horse', 'maison' => 'house', 'souris' => 'mouse');

Min pointe er bare, at man vel ligeså godt kan skabe tabllen med de 4 rækker/2 kolonner med indhold via en funktion i PHP-koden, gemme den i en variabel og bruge <?php echo $simpletable; ?>. Det samme gælder for betingelsen.

Jeg mangler bare denne der 'aha' oplevelse ;)
Avatar billede erikjacobsen Ekspert
04. juli 2004 - 23:48 #9
Du mangler overskriften ;)

Det er primært syntaks, der gør det nemmere at skrive, for selvfølgelig kan man
det samme med PHP. Det er jo bare PHP nedenunder. Hvad så med eksempel 2? Her
kan jeg uden videre klippe/klistre fra et kørende program, uden at ændre formatteringen. Kan du det?
Avatar billede googolplex Novice
04. juli 2004 - 23:55 #10
'Her kan jeg uden videre klippe/klistre fra et kørende program, uden at ændre formatteringen. Kan du det?'

Det ved jeg ikke, for jeg forstår ikke helt hvad du mener :P

Nå, men jeg tror jeg kaster mig ud i det, man lærer jo mest af egne erfaringer :)

Tak for dit bidrag, point?
Avatar billede googolplex Novice
05. juli 2004 - 19:53 #11
lukker
Avatar billede googolplex Novice
05. juli 2004 - 19:54 #12
Lukker igen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester