Stiamo scherzando? E' pazzesco pensare di non usre i template engine, per N motivi. IMHO i principali sono 2.
Il primo è che in un ambiente lavorativo normale il programmatore php non è anche il responsabile della creazione dell'html, per quello c'è un designer specializzato, che ne capisce bene di uno e non dell'altro. Mischiando i due tipi di codice diventa veramente complicato manterli entrambi, ma MOLTO complicato, quasi una sfida acrobatica. Inoltre, si corre il serio risco di compromettere un tipo di codice modificando l'altro. Pensa ad esempio cosa potrebbe succedere se il designer, usando dreamweaver o simili, eliminasse un intera porzione di codice html perchè non più necessario, eliminando al contempo tutto l'eventuale codice php ivi contenuto... impensabile.
Con un template il codice HTML sta nel file .html, il codice PHP nel file .php e questo rischio non esiste.
Il secondo è che non usando template engine, il codice diventa dipendente dal layout.
Ad esempio, supponi di dover visualizzare una tabella con una serie di totali ed un page navigator per la suddivisione dei contenuti in pagine (il che in genere è auspicabile).
A seconda di dove lo vuoi visualizzare, se in alto, in basso etc devi fisicamente spostare il tuo codice od addirittura esser costretto a scrivere le cose più volte, o sei semplicemente costretto a super parametrizzare il tutto o a salvarti milioni di variabili temporanee.. O peggio, se il layout cambia (una cosa che era in alto finisce in basso o viceversa), puoi esser costretto a dover riscrivere pezzi di codice, non solo spostarli... terribile, semplicemente.
Con un template ti risolvi il problema, in quanto la visualizzazione è gestita in un file separato ed indipendente e l'effettiva collocazione degli elementi (o la loro ripetizione) non riguardano minimamente il flusso del codice, il quale rimane invariato.
Per farti capire come si usa un template, facciamo un esempio, usando un engine di template e nomi di file ipotetici.
Supponiamo di voler visualizzare la data corrente in una pagina html. Senza usare i template, dovresti creare un file che potremmo chiamare "pagina.php" e metterci dentro il seguente codice:
Con i template, dovresti innanzitutto creare un file (il template) che potremmo chiamare "pagina.html" in questo modo:
Quindi un file php (che poi è quello che chiamerai per visualizzare la pagina) che potremmo chiamare "pagina.php" con il seguente codice:
Codice: Seleziona tutto
<?php
include("template_engine.php");
$tpl = new template("pagina.html");
$tpl->set_var("data_corrente", date("d/m/Y");
$tpl->parse();
?>
Nel file, come puoi vedere, innanzitutto includi l'engine di template. Quindi istanzi un oggetto di tipo template facendogli caricare il file .html, valorizzi al suo interno la variabile {data_corrente} e ne visualizzi l'output.
Il tutto è ovviamente più lungo da scrivere ma decisamente più pulito ed organizzato, e nulla di quello che può accadere all'HTML comprometterà mai il codice PHP.
L'unico vero difetto dei template, comunque, è l'utilizzo della memoria. Ogni template ne consuma un certo quantitativo, ed avendo php (come è ragionevole che sia) un limite fisico alla dimensione di memoria che ogni interrogazione può occupare, ne consegue che c'è un limite fisico alla dimensione massima delle pagine che puoi creare con i template (dipendente dalle impostazioni di PHP sul sever).