Template Engine: separare programmazione e design

20 marzo 2006

Introduzione

Un’applicazione è costituita principalmente da due componenti: le funzionalità (gli algoritmi usati o la reperibilità dei dati) e la presentazione dei dati elaborati all’utente. Sono due ambiti ben distinti gestiti spesso da soggetti differenti (nello sviluppo web la parte della logica può essere affidata ad un web developer mentre quella della presentazione ad un web designer) che però non sempre vengono separati nella pratica.

Non è inusuale che un web designer senza competenze in materia di programmazione si debba trovare a modificare uno script php nella parte che riguarda il linguaggio html, o che viceversa il programmatore php debba adattare il codice html al proprio applicativo.

I template engine nascono appunto per evitare che queste situazioni si verifichino: la parte applicativa del software dovrebbe essere completamente slegata dal tipo di presentazione utilizzata e la parte di presentazione non dovrebbe curarsi di come i dati le vengano forniti. In sintesi, il programmatore si preoccupa solamente di reperire i dati, operarvi le modifiche necessarie e renderli disponibili; il designer si occupa di creare le presentazioni inserendo al posto dei dati effettivi dei marcatori speciali; il template engine fonde i due aspetti: prende i dati forniti dalla parte applicativa, e li inserisce al posto dei marcatori prestabiliti.

Un altro aspetto di non trascurabile importanza nell’utilizzo di un sistema di template engine è dato dal fatto di poter generare a partire dalla stessa parte applicativa diverse presentazioni dei dati in differenti formati. È il concetto su cui si basa la riutilizzabilità del codice: si scrive una volta sola la parte di reperimento dei dati e poi si crea un template specifico per ogni tipologia di documento da creare. Un esempio banale di questa funzione potrebbe essere la creazione di una pagina in formato html con la grafica, in html senza grafica, in testo puro, in Pdf, in rtf programmando un unico script php e scrivendo semplicemente i template adatti.

Pur tenendo conto di questa potenzialità, nel corso di questo articolo tratteremo soltanto della creazione di documenti in html.

Template e php: due strade

Il php nasce embedded, ciò significa che oltre a poterlo utilizzare normalmente come un qualunque altro linguaggio di programmazione è possibile anche inserire piccole parti di codice direttamente all’interno del documento.

<h1>Titolo dell’articolo: <?php=$titolo;?></h1>

Grazie a questa e altre particolarità (come le forme abbreviate per cicli e costrutti come while:/endwhile;) possiamo utilizzare il php come template engine. I vantaggi di questo sistema sono l’estrema velocità dell’esecuzione del codice e la grande potenza (è possibile usare tutte le funzioni standard del php, le estensioni, funzioni particolari, ecc.). D’altra parte questa soluzione richiede che gli addetti alla parte grafica imparino il php che rimane sempre un linguaggio di programmazione. HTML.it ha già dato spazio a Utilizziamo i template integrati con Php, utili per progetti di piccole dimensioni ma che difficilmente separano la logica dalla presentazione.

Un metodo più elegante è quello dell’utilizzo di sistemi di template engine scritti in php. Questi sistemi utilizzano uno pseudo-linguaggio di programmazione creato ad hoc (quindi se ne avete le capacità potete aggiungere funzionalità modificando il codice sorgente) per creare cicli, blocchi if/then/else, variabili ecc.

Alcuni tra i template engine scritti in php:

  • Phemplate: semplice e veloce nella sostituzione delle variabili, permette anche alcune funzionalità dinamiche come i loop
  • SmartTemplate: sistema molto potente e completo, dispone di alcune caratteristiche interessanti come un comodo metodo per impostare le righe di una tabella a colori alterni
  • Smarty: il sistema oggetto di questo articolo, è considerato da molti il più completo. Per questo è considerato anche un template engine complesso.

Per fornire ai lettori un esempio di Template Engine in php andremo a dare uno sguardo da vicino a Smarty.

Se vuoi aggiornamenti su Template Engine: separare programmazione e design inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su Template Engine: separare programmazione e design

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy