Non mi è mai capitato di sviluppare un template engine ed ho sempre utilizzato terze parti.
Nel caso in cui dovessi farlo però sfrutterei la funzione eval()
abbiamo ad esempio una cartella con file .tpl (protetta con .htaccess). Al suo interno avremo, ad esempio, file di questo tipo: header.tpl
Codice PHP:
<html>
<head>
<title><?php echo $title; ?></title>
<meta name="description" content="<?php echo $description; ?>" />
</head>
Poi avremo una classe template che sarà na cosa di questo tipo (moltoooo sbrigativa e priva di qualsiasi controllo... giusto un esempio per capirci)
Codice PHP:
<?php
Class template{
public $dir_template = 'tpl/';
public function __costruct(){
}
public function render($tpl, $vars = array()){
extract($vars);
$template = file_get_contents($this->dir_template . $tpl);
return eval("?>" . $template);
}
}
Poi per richiamare il template e sostituire le variabili farai
Codice PHP:
<?php
$data = array(
'title' => 'questo è il titolo',
'description' => 'questa è la descrizione'
);
require_once('class/template.class.php');
$template = New template;
$template->render('header.tpl', $data);
... poi ovviamente si dovrebbero creare i file e le/la cartella/e per gestire il chaching... la cosa si complica e non di poco