Petiga kommentarer
Peeer skrev:
När jag frågade efter en templatemotor så var jag inte ute efter ett system med "egentillverkad" syntax, utan bara ett smidigt sätt att separera logiken från presentationslagret så mycket det går. Att viss phpkod finns med i presentationslagret gör mig inget, men jag vill separera phpkoden från htmlkoden så mycket som möjligt (utan att överdriva med en "eget" kodspråk). Dvs jag tror ni försöker övertyga mig att göra som jag redan gör. :)
Återigen dags att bli petig, men rätt språkbruk leder oftare till enklare diskussion.
Poängen med mallar är i grunden inte att separera html från logik, utan att separera presentationslogik från affärslogik. Det är alltså helt OK med logik i sina mallar, men inte datainhämtande eller bearbetande dito.
Nästa vinst med mallarna är - som jag sagt tidigare och som sekunderats av andra - att mallen lämpligen körs i en skyddad miljö, fjärran från exempelvis globala variabler och liknande. Ett exempel på detta är Zend_View: http://framework.zend.com/manual/en/zend.view.html
This is a PHP script like any other, with one exception: it executes inside the scope of the Zend_View instance, which means that references to $this point to the Zend_View instance properties and methods.
Den tredje vinsten är att man kan skapa "utility"-metoder och lägga ett lager av abstraktion för att påskynda sin kodning. Mallsystem har ofta stöd för delvis cachning av sidor, vilket är guld värt på en högtrafiksida, som har typ 90 % identiskt innehåll per visning, men 10 % unikt per dito.
Den fjärde aspekten, som jag ser det, är att somliga mallsystem tillhandahåller en alternativ syntax. Om mallsystemet är "kompilerande" som Smarty, eller PHP har inbyggt stöd för syntaxen, d.v.s. om man använder XSLT, så är prestandanedsättningen försumbar. Själv har jag använt just Smarty, och kan se både för- och nackdelar med dess syntax. Viktigaste fördelen är att koden ofta blir mer läsbar och mer naturligt anpassad till sin miljö - att vara en mall. Viktigaste nackdelen är just att det blir YALTL ("yet another language to learn") En annan nackdel är att "ren" PHP ofta stöds av de program som designers gillar, typ Dreamweaver, medan inget sådant program stödjer - mig veterligen - alternativa syntaxer.