Smarty, un template engine per PHP leggero e potente

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.

Link