TEMPLATE ENGINE PHP

You are viewing the theme
[Voti: 0    Media Voto: 0/5]

modo semplice per realizzare la grafica dei siti in PHP

Smarty: Template Engine – Breve Introduzione

di Alberto Giacobone

L’universo di soluzioni che gravitano
attorno al linguaggio PHP si espande ogni giorno di più,
offrendoci solo l’imbarazzo della scelta sulla strada da
intraprendere per affrontare una determinata esigenza: in questo
articolo ne indichiamo una particolarmente interessante.

Grafici e
Programmatori

Amore e odio: come per chitarristi e tastieristi in un gruppo
musicale, il rapporto tra grafici e programmatori nel contesto di
un team che sviluppa progetti per il web può ben essere
sintetizzato dalla precedente espressione.

Sempre di più costretti a lavorare fianco a fianco, se
fosse per i programmatori, i grafici dovrebbero tutti lavorare
con un editor testuale (notepad, vi e simili) editando a mano il
codice HTML, mentre se fosse per i grafici, i programmatori
dovrebbero evitare di intervenire nei loro layout, studiati al
pixel, come degli elefanti in un negozio di porcellane.

Come unire i due mondi, senza che i grafici svengano di fronte
a blocchi di codice PHP e chiamate a database mischiate a codice
HTML, e senza che i programmatori sudino freddo ogni volta che
passano un file, magari frutto di notti insonni ad un grafico,
perché questi ci metta mano?

Il Sacro Graal tanto agognato risiede nella scelta di separare
“al meglio” il piano della logica e delle
funzionalità da quello dell’aspetto grafico,
riducendo i punti di contatto tra i due mondi: un minimo di
interazione (al di là di quella che intercorre alla
macchinetta del caffè) è comunque necessario, ma
sicuramente questa scelta può migliorare la qualità
della vita di entrambi i soggetti.

Come in ogni conciliazione, il primo passo spetta ad uno dei
due soggetti, ed in questo caso sono proprio i programmatori che
possono, aiutati dai potenti strumenti a loro disposizione,
creare i presupposti per la separazione dei due piani.

Se i programmatori in questione fanno uso di PHP (sempre
più conosciuto ed apprezzato non solo dagli addetti ai
lavori), hanno dalla loro un “motore di template”
tutto da scoprire: Smarty. (http://smarty.php.net)

Se non basta il nome a far venire l’acquolina in bocca
ai più golosi, sicuramente ci riusciranno le
funzionalità avanzate e le caratteristiche di tutto
rispetto di quest’applicativo.

I motori di template: cosa
sono?

I motori di template, in ambiente PHP così come in
altri ambienti, sono delle classi che consentono ai grafici di
interagire con il codice sviluppato dai programmatori senza per
questo dover acquisire competenze specifiche sul linguaggio di
programmazione utilizzato.

Un rapido esempio può rendere molto facilmente
l’idea: supponiamo di dover visualizzare un elenco di
risultati in una serie di righe, alternando il colore di riga,
per facilitarne la lettura:


<table>
<tr bgcolor=”#cccccc”>
<td>Prima riga</td>
</tr>
<tr bgcolor=”#eeeeee”>
<td>Seconda riga</td>
</tr>
<tr bgcolor=”#cccccc”>
<td>Terza riga</td>
</tr>
</table>

Se i risultati che popolano le celle vengono estratti
dinamicamente da database, il programmatore normalmente
dovrà creare il codice necessario per gestire
l’alternanza dei colori:


...
if ($myrow = mysql_fetch_array($result)) {
?>
<table>
<?php
$i = 0;
do {
$i++;
$colore = .#cccccc.;
if ($i % 2 == .0.) {
$colore = .#eeeeee.;
}
?>

<tr bgcolor=”<?php echo $colore; ?>”>
<td><?php echo $myrow[valore]; ?></td>
</tr>
<?php
} while ($myrow = mysql_fetch_array($result));
?>

</table>
<?php
}
...

Se il grafico non è ancora svenuto di fronte a questo blocco di
codice, sicuramente lo farà quando il cliente (quello che .ha sempre
ragione., ndA), gli chiederà di stravolgere la visualizzazione di
questa parte di pagina.

Anticipando la sintassi di Smarty, il blocco sopra menzionato più o meno risulta così predisposto:

<table>
{cycle values=.#cccccc,#eeeeee. print="false"}
{section name=result loop=$id}
<tr bgcolor=.{cycle}.>
<td>{$valore[result]}</td>
</tr>
{/section}
</table>

Tralasciando l’economia in termini di codice della soluzione
mostrata, è indubbio che la seconda sintassi ne favorisce la digestione
da parte dei grafici e soprattutto da parte dei programmi di editing
visuale di cui fanno spesso uso (con buona pace di chi li vorrebbe
veder lavorare con i sopraccitati notepad, vi et similia): a tal
proposito si segnala il link a questo contributo dove è disponibile un plug-in per Macromedia Dreamweaver per farlo interagire meglio con Smarty.

L.utilità di questa classe, anche per i programmatori, si rende
ancora più evidente se apportiamo una piccola ma significativa modifica
all.esempio precedente: se infatti il cliente (sempre quello di prima,
ndA) richiede che in fase di visualizzazione i colori ad alternarsi
siano tre e non più due, laddove non sia utilizzato Smarty il grafico
deve ripassare il file al programmatore, attendere che questo
intervenga modificando ed aggiungendo le poche righe di codice
necessarie:


$i++;
$colore = .#cccccc.;
if ($i % 3 == .0.) {
$colore = .#eeeeee.;
}
if ($i % 3 == .1.) {
$colore = .#aaaaaa.;
}
?>
…

e poi il programmatore deve ripassare il codice nuovamente al
grafico: questo duplice passaggio, potenzialmente assai
dispersivo in termini di tempo (soprattutto se richiesto in
concomitanza con il giorno libero del programmatore, come sembra
avvenga nella maggior parte dei casi in base alla nota legge di
murphy) e di risorse, è evitabile considerando che
utilizzando smarty il grafico potrà semplicemente
aggiungere il terzo colore all’elenco del ciclo:


…
{cycle values=”#cccccc,#eeeeee,#bbbbbb”
print="false"}
…

senza dover modificare altro.

Questo semplice esempio rende evidente i vantaggi che
l’utilizzo di un motore di template come Smarty comporta
nell’ambito del ciclo produttivo.

Smarty: un motore di template con una
marcia in più

Rispetto ad altri motori di template realizzati in PHP, Smarty
è tra i più veloci, come risulta da un test
disponibile all’indirizzo http://www.phpinsider.com/benchmarks_phemplate/, (il
test viene effettuato in tempo reale, quindi i risultati possono
variare in base al traffico sul server).
Inoltre i template generati da Smarty sono compatibili con
acceleratori quali ZEND Cache (http://www.zend.com), PHP-Accelerator (http://www.php-accelerator.co.uk), Alternative Php
Cache (http://apc.communityconnect.com/) od il nostrano
AfterBurner (http://afterburner.bware.it/).

Un’innovativa caratteristica di Smarty è la
pregenerazione del codice PHP derivante da un template: una volta
generato un template infatti, questo viene
“interpretato” da Smarty, e trasformato in normale
codice PHP, in maniera completamente trasparente per
l’utente: grazie a questo accorgimento, quando i visitatori
chiameranno le pagine web così realizzate non ci
sarà nessun sovraccarico legato alla sostituzione di
variabili, ricostruzione di sezioni o quant’altro; tutto
ciò ovviamente mantenendo inalterata la dinamicità
delle pagine risultanti.

Un altro punto di forza è l’espandibilità
di Smarty con dei PlugIn, nel rispetto di un’API ben
documentata che consente agli sviluppatori di aggiungere e
condividere nuove funzionalità alla classe base.

Inoltre, nella classe base sono disponibili una serie di
“modificatori”, che consentono di intervenire con
facilità sulle modalità di visualizzazione delle
variabili passate nei template.

Per un esempio di come questi modificatori rispondano al
meglio alle esigenze più comuni, prendiamo in
considerazione il modificatore ‘truncate’, che
consente di mostrare solo i primi ‘n’ caratteri di
una stringa, con interessanti varianti: ecco il codice
esemplificativo contenuto nella documentazione (n.b. il valore
‘n’ passato di default è 80):

{$articleTitle}
{$articleTitle|truncate}
{$articleTitle|truncate:30}
{$articleTitle|truncate:30:""}
{$articleTitle|truncate:30:"---"}
{$articleTitle|truncate:30:"":true}
{$articleTitle|truncate:30:"...":true}

Il cui output a video risulta:

Two Sisters Reunite after Eighteen Years at Checkout
Counter.
Two Sisters Reunite after Eighteen Years at Checkout Counter.
Two Sisters Reunite after...
Two Sisters Reunite after
Two Sisters Reunite after---
Two Sisters Reunite after Eigh
Two Sisters Reunite after E...

Come si può vedere, attraverso una sintassi molto
immediata, è possibile controllare in maniera molto
precisa la presentazione dei contenuti, e bisogna ricordare che
è consentito combinare simultaneamente più
‘modificatori’, potendo quindi gestire anche le
situazioni più complesse.

E’ evidente come sia comunque richiesto al grafico un
minimo di apprendimento della sintassi di Smarty, ma sicuramente
ci troviamo di fronte ad una curva di apprendimento inferiore
rispetto a quella (già bassa di per sé, ndA)
relativa a PHP.

Si conclude qui questa breve introduzione al motore di
‘template’ Smarty, non senza stuzzicare
l’appetito ai più intrepidi, sottolineando le
potenzialità del connubio tra Smarty ed un applicativo
‘database driven’, per la gestione di siti complessi
ed applicativi particolari, liberando il programmatore dalle
preoccupazioni relative all’interfaccia grafica ed il
grafico dall’interazione con ‘arcani’ linguaggi
di programmazione.

SMARTY.PHP.NET

Uno dei migliori software per creare template engine

UTILIZZIAMO I TEMPLATE INTEGRATI CON PHP

In questo articolo verrà trattato l’uso, o meglio, l’interazione di templates html e PHP. Chiarisco preventivamente, come spiegherò più in dettaglio di seguito, che non alludo alla semplice inclusione di un file html all’interno di una pagina PHP, ma di qualcosa di diverso e un po’ più complesso.

RAIN TPL