perchè non amo i template engine

Con questo articolo voglio spiegarti perchè non amo i Template Engine, perchè non li utilizzo e non li utilizzerò. Ma partiamo dall’inizio che sembra la cosa più giusta da fare 😀

Cos’è un Template Engine e a cosa serve?

Un Template Engine è un insieme di librerie e/o codici che permette di separare il contenuto dalla presentazione in un applicazione web. Il Template Engine più famoso e utilizzato è probabilmente Smarty.

Separare il contenuto (codice, dati ecc.) dalla presentazione (layout, html, css) è sicuramente un approccio da adottare in quanto agevola il lavoro delle diverse figure professionali che collaborano per lo sviluppo di un’applicazione (il web developer e il web designer), che possono lavorare separatamente senza dover dipendere l’uno dall’altro. Come riporta l’articolo di php.html.it linkato all’inizio del post:

il programmatore si preoccupa solamente di reperire i dati, operarvi le modifiche necessarie e renderli disponibili; il designer si occupa di creare le presentazioni inserendo al posto dei dati effettivi dei marcatori speciali; il template engine fonde i due aspetti: prende i dati forniti dalla parte applicativa, e li inserisce al posto dei marcatori prestabiliti.

Bene, tutto molto utile. Ma allora perchè non ami i Template Engine?

Per uno motivo molto semplice: li reputo un “layer” inutile, superfluo.

Molti sono soliti associare il concetto di separazione del contenuto dalla presentazione all’adozione di un Template Engine. Ma, in realtà, si può tranquillamente separare il contenuto dalla presentazione facendo benissimamente a meno di un Template Engine. Ecco perchè è inutile. Sicuramente, gli utilizzatori incalliti di Template Engine, mi avranno insultato dopo aver letto queste mie parole… machissenefrega 😛

Un Template Engine non eguaglia le performance del codice PHP nativo in quanto, il codice del Template Engine, dovrà essere riconvertito in codice nativo al momento dell’esecuzione. Poi, da un punto di vista sintattico, il designer non è che sia particolarmente agevolato, vediamo in questo esempio:

Codice nativo

<ul>
<?php foreach ($users as $item) { ?>
<li><?php echo $item; ?></li>
<?php } ?>
</ul>

Codice Template Engine

<ul>
{foreach from=$users item=item}
<li>{$item}</li>
{/foreach}
</ul>

Ecco, fornire al designer una funzione/API (o chiamiamola come preferiamo) di questo genere, può essere una soluzione senza dubbio comoda per lui…ed è anche in codice nativo:

<ul>
<?php output($users); ?>
</ul>

Per una soluzione più “potente” si può ricorrere all’ottimo Plates.

In sostanza, per separare il contenuto dalla presentazione, la differenza la fa la fase di analisi e progettazione…non l’adozione o la non adozione di un Template Engine. Scegliere un buon Framework PHP che adotta il Pattern MVC è un ottimo punto di partenza e, sembra banale ma non lo è, massima collaborazione e intesa tra Developers e Designers sono sufficienti…con la speranza che non vi imbattiate in uno di questi ambigui personaggi 🙂

NO SPAM. Non fornirò la tua email a terzi e riceverai solo contenuti che ti interessano sugli argomenti che tratto e potrai cancellarti quando vuoi con un link che trovi in tutte le email.