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

Prefazione

Indubbiamente è una delle domande più frequenti sulle mailing list del PHP: perché devo rendere i miei script PHP indipendenti dal layout? Se è vero che PHP è conosciuto come "linguaggio di scripting incorporato in HTML", dopo aver realizzato un paio di progetti che mescolano liberamente PHP e HTML nasce l'idea che separare forma e contenuti sia una buona cosa. Inoltre, in molte aziende i ruoli dei grafici (progettisti del layout) e dei programmatori sono separati. La ricerca di una soluzione con i template è quindi una conseguenza naturale.

Ad esempio, nella nostra azienda lo sviluppo di un applicazione procede così: dopo che sono stati redatti i documenti con le specifiche richieste, i progettisti delle interfacce creano dei modelli di interfaccia e li danno ai programmatori. Questi implementano la logica di business in PHP e usano i modelli di interfaccia per creare scheletri di template. A questo punto il progetto passa al progettista HTML/creatore di layout per le pagine web, che porta i template al loro massimo splendore. Il progetto potrebbe ancora andare avanti e indietro un paio di volte fra programmazione e HTML. Quindi è importante avere un buon supporto per i template, perché i programmatori non vogliono avere a che fare con l'HTML e non vogliono che i progettisti HTML facciano danni col codice PHP. I grafici hanno bisogno di supporto per i file di configurazione, i blocchi dinamici e altri elementi di interfaccia, ma non vogliono dover avere a che fare con le complicazioni del linguaggio di programmazione.

Dando un'occhiata alle diverse soluzioni di template attualmente disponibili per PHP, vediamo che la maggior parte di esse fornisce solo un modo rudimentale per sostituire variabili nei template e hanno delle forme limitate di funzionalità relative ai blocchi dinamici. Ma le nostre necessità erano un po' maggiori di queste. Noi volevamo che i programmatori evitassero DEL TUTTO di avere a che fare con l'HTML, ma questo era quasi inevitabile. Ad esempio, se un grafico voleva alternare i colori di sfondo su un blocco dinamico, questo doveva essere ottenuto preventivamente dal programmatore. Volevamo anche che i grafici potessero usare i propri file di configurazione, ed importare da questi le variabili nei template. La lista potrebbe continuare ancora.

Iniziammo così a scrivere una specifica per un motore di template verso la fine del 1999. Dopo avere finito le specifiche, iniziammo a lavorare su un motore scritto in C che, speravamo, avrebbe potuto essere incluso in PHP. Non solo però ci scontrammo con molti complicati ostacoli tecnici, ma c'era anche un dibattito molto acceso su cosa esattamente un motore di template avrebbe dovuto fare e cosa no. Da questa esperienza decidemmo che il motore sarebbe stato scritto in PHP come classe, in modo che ognuno potesse usarlo come gli pareva. Così scrivemmo un motore che faceva proprio quello e SmartTemplate™ venne alla luce (nota: questa classe non è mai stata pubblicata). Era una classe che faceva quasi tutto quello che volevamo: sostituzione delle variabili, supporto per l'inclusione di altri template, integrazione con i file di configurazione, incorporazione del codice PHP, limitate funzionalità con istruzioni 'if' e molti altri robusti blocchi dinamici che potevano essere nidificati ripetutamente. Tutto questo veniva fatto con le espressioni regolari e il codice che ne venne fuori era, per così dire, impenetrabile. Era anche notevolmente lento nelle grosse applicazioni, per via di tutta l'analisi (parsing) ed il lavoro sulle espressioni regolari che doveva fare ad ogni invocazione. Il problema più grosso dal punto di vista di un programmatore era tutto il lavoro necessario nello script PHP per creare ed elaborare i template ed i blocchi dinamici. Come rendere tutto questo più semplice?

Così nacque la visione di quello che poi è diventato Smarty. Sappiamo quanto è veloce PHP senza il sovraccarico dell'analisi dei template. Sappiamo anche quanto il linguaggio possa apparire meticoloso ed estremamente noioso per il grafico medio, e questo può essere mascherato con una sintassi di template molto più semplice. Allora, perché non combinare i due punti di forza? Così nacque Smarty...

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors