mirror of
https://github.com/smarty-php/smarty.git
synced 2025-11-02 13:21:36 +01:00
95 lines
5.0 KiB
XML
95 lines
5.0 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision$ -->
|
|
<preface id="preface">
|
|
<title>Prefazione</title>
|
|
<para>
|
|
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.
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para>
|
|
<para>
|
|
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.
|
|
</para>
|
|
<para>
|
|
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 <productname>SmartTemplate</productname>
|
|
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?
|
|
</para>
|
|
<para>
|
|
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...
|
|
</para>
|
|
</preface>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"../../../../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|