Smarty, un template engine per PHP leggero e potente

Posted on giugno 27th, 2011. Written by Dimitri De Franciscis.


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

HS su Facebook!