In generale sono contro i template engine che implementano un proprio
linguaggio perché:
- php è già un template engine, andare ad implementare un altro
linguaggio comporta non solo un consumo maggiore di risorse (consumo
che rischia di diventare eccessivo, un esempio tra tutti proprio
smarty);
- generalmente gli editor php visuali permettono ai grafici di
implementare buona parte del template senza scrivere codice php e, ove
necessario, penso che un grafico sarebbe "più felice" se deve
impararsi qualcosa di php piuttosto che impararsi qualcosa di smarty;
- il caching del template "compilato" (se cosi si può dire) può
risultare problematico su quei serivizi di hosting che impongono una
specifica cartella nella quale scrivere con php con il risultato che
il software deve prevedere un'apposito parametro di configurazione per
la cache del template engine (dato che molti software non permettono
di variare questo parametro).
Ci sono anche altri motivi, ma ritengo che questi stiano tra le prime
posizioni
Detto tutto questo, un "include/require" non può essere sostituito da
nessun template engine: che non vuol dire che non si deve fare
separazione tra "view" e "controller" ... anzi! Semplicemente che
invece di usare un'altro linguaggio per costruire la view si usa php.