Get Smarty

Donate

Paypal

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Advertisement

Chapter 1. Cos'è Smarty?

Smarty è un motore di template per PHP. Più specificatamente, fornisce un modo semplice di separare la logica e il contenuto dell'applicazione dalla sua presentazione. Questo concetto si può comprendere meglio in una situazione in cui il programmatore ed il progettista dei template hanno ruoli diversi, o nella maggior parte dei casi non sono la stessa persona.

Per esempio, diciamo che dovete creare una pagina web che mostra un articolo di giornale. Il titolo, il sommario, l'autore e il corpo dell'articolo sono gli elementi del contenuto: non contengono informazioni su come saranno presentati. Vengono passati a Smarty dall'applicazione, dopodiché il grafico modifica i template e usa una combinazione di tag HTML e tag di template per formattare la presentazione di questi elementi (tabelle HTML, colori di sfondo, dimensione dei caratteri, fogli di stile ecc.). Un giorno il programmatore ha bisogno di cambiare il sistema in cui viene ottenuto il contenuto dell'articolo (si tratta di una modifica alla logica dell'applicazione). Questa modifica non influisce sul lavoro del grafico, infatti il contenuto arriverà al template esattamente uguale a prima. Allo stesso modo, se il grafico vuole ridisegnare completamente il template, questo non richiederà modifica alla logica applicativa. Quindi, il programmatore può fare modifice alla logica senza bisogno di ristrutturare i template, e il grafico può modificare i template senza rovinare la logica dell'applicazione.

Uno degli obiettivi progettuali di Smarty è la separazione della logica di business dalla logica di presentazione. Questo significa che i template possono contenere logica, a condizione che tale logica sia esclusivamente relativa alla presentazione. Cose come includere un altro template, alternare i colori delle righe di tabella, mostrare un dato in maiuscolo, ciclare su un array di dati per visualizzarli, ecc., sono tutti esempi di logica di presentazione. Questo non significa che Smarty forza una separazione fra la logica di business e quella di presentazione. Smarty non può sapere che cosa è una cosa e cosa è l'altra, per cui se mettete logica di business nel template sono affari vostri. Inoltre, se non volete alcuna logica nei template, potete sicuramente ottenere ciò riducendo il contenuto a solo testo e variabili.

Uno degli aspetti caratteristici di Smarty è la compilazione dei template. Questo significa che Smarty legge i file dei template e crea script PHP a partire da questi. Una volta creati, questi script vengono eseguiti da quel momento in poi: di conseguenza si evita una costosa analisi dei template ad ogni richiesta, e ogni template può avvantaggiarsi pienamente di strumenti per velocizzare l'esecuzione come Zend Accelerator (http://www.zend.com/) o PHP Accelerator (http://www.php-accelerator.co.uk).

Ecco alcune delle funzionalità di Smarty:

  • E' estremamente veloce.

  • E' efficiente, perché è l'analizzatore di PHP a fare il "lavoro sporco".

  • Non c'è sovraccarico per l'analisi del template, che viene compilato una sola volta.

  • E' abbastanza furbo da saper ricompilare solo i template che sono stati modificati.

  • Potete creare funzioni personalizzate e modificatori di variabili personalizzati, il che rende il linguaggio dei template estremamente estensibile.

  • La sintassi dei tag di delimitazione dei template è configurabile: potete usare {}, {{}}, <!--{}-->, ecc.

  • I costrutti if/elseif/else/endif vengono passati al PHP, quindi la sintassi delle espressioni condizionali può essere semplice o complicata a vostro piacimento.

  • E' consentito nidificare in maniera illimitata sezioni, test, ecc.

  • E' possibile incorporare direttamente codice PHP nei file di template, sebbene non dovrebbe essercene bisogno (e nemmeno è raccomandato), essendo il motore così personalizzabile.

  • Supporto nativo al caching

  • Scelta arbitraria dei sorgenti dei template

  • Funzioni personalizzate di gestione della cache

  • Architettura a plugin

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors