Nell’articolo precedente abbiamo visto alcune tecniche molto semplici per realizzare i propri template con PHP. In questo appuntamento vedremo come si usa Smarty, un template engine molto sofisticato e maturo.
Installazione
Requisiti
Al momento della stesura di questo articolo sono disponibili due major version della libreria: 2.x (che era la precedente versione stable) e la 3.x. A livello di funzionalità offerte non cambia molto, ma con la 3.x è stato fatto un gran lavoro di revisione delle API con l’obiettivo di rendere il tutto più modulare e consistente. L’unico requisito che questa versione richiede è che il server supporti PHP 5.2 o superiore; la versione 2.x invece supporta ancora 4.0.6 o superiore.
Installazione
Dopo aver scaricato il pacchetto dal sito web, estraetelo in una directory accessibile dal web server (esempi tratti dal sito):
/usr/local/lib/Smarty-v.e.r/
(unix/linux);c:\webroot\libs\Smarty-v.e.r\
(Windows).
dove ovviamente con “v.e.r” si intende la versione, ad esempio 3.0.8.
I file che ci servono per utilizzare la libreria si trovano all’interno della distribuzione nella directory /libs; per utilizzare la libreria dovremo quindi indicare alla nostra applicazione dove trovare questa directory. Ci sono due modi per farlo: modificare il file php.ini oppure definire la costante SMARTY_DIR. Visto che i nostri sono solo esperimenti cercheremo di toccare il meno possibile un file importante come php.ini, soprattutto per evitare di rendere instabile il nostro sistema; adotteremo quindi la strada della costante SMARTY_DIR. Per ogni dubbio vi rimandiamo alla documentazione presente sul sito ufficiale, che è molto completa e spiega le varie possibilità a disposizione.
Spostiamoci ora nella document root della nostra applicazione web e creiamo queste quattro directory: templates/, templates_c/, configs/ and cache/. É molto importante che che il web server abbia accesso in scrittura alle directory templates_c e cache, se state usando un sistema Unix-like (Unix, Linux, Mac OSX, ecc.) e Apache, dovreste procedere in questo modo:
- aprite il file di configurazione di Apache, httpd.conf;
- cercare le voci User e Group, ad esempio:
User www Group www
- impostare owner e permessi di scrittura con questi comandi:
chown www:www templates_c/ chmod 770 templates_c/ chown www:www cache/ chmod 770 cache/
Un giro di prova
Vediamo finalmente come utilizzare questa libreria, creando un file index.php nella document root:
<?php define('SMARTY_DIR', '[DIRECTORY DI INSTALLAZIONE DI SMARTY]/libs/'); require_once(SMARTY_DIR . 'Smarty.class.php'); $smarty = new Smarty(); $smarty->assign('name', 'Dimitri'); $smarty->display('default.tpl'); ?>
Da notare:
- la definizione della costante SMARTY_DIR: sostituite la stringa fra parentesi quadre con il path assoluto utilizzato dal vostro sistema;
- la crazione della variabile $smarty;
- la chiamata al metodo display(), che esegue il rendering della pagina.
Il template default.tpl, richiamato dal metodo display(), va salvato nella direcory templates/:
<html> <head> <title>Hello World</title> </head> <body> Ciao {$name}! </body> </html>
Ora, se richiamiamo la pagina index.php, dovremmo ottenere una pagina web “templatizzata”, con il messaggio:
Ciao Dimitri!
Sviluppi
L’utilizzo che abbiamo fatto fino ad ora di questa libreria è molto limitato, nei prossimi appuntamenti sfrutteremo appieno le caratteristiche più importanti di Smarty. Inoltre affronteremo alcuni argomenti riguardanti la sicurezza delle applicazioni, che abbiamo volutamente tralasciato per semplificare l’esposizione.