Originariamente inviato da daniele_dll
prendo in esempio solo sto pezzo ... tu li come ci arrivi? questo "brandello" di codice sta insieme al codice che estrae i dati e li prepara (ergo estrae e prepara $resultset e $pagination)? perché se si è un gran gran gran casino ... se no è esattamente quello che voglio fare io ovvero carico esternamente i template (questo brandello può essere un esempio), li spezzo in base ai blocchi e poi li parso con eval
Ti posto la classe così facciamo prima:
Codice PHP:
class w_Template {
private $vars= array();
private $file= '';
public function __construct($fileName) {
$file= search_include_path($fileName);
if (!is_file($file)) {
throw new w_FileException("The file ".$fileName." doesn't exist.");
}
$this->file= $file;
}
public function set($name, $value) {
$this->vars[$name]= ($value instanceof w_Template) ? $value->fetch() : $value;
}
public function fetch() {
extract($this->vars);
ob_start();
include($this->file);
return ob_get_clean();
}
}
// Nicked by Konstruck
function search_include_path($filename) {
if (is_file($filename)) {
return $filename;
}
foreach (explode(PATH_SEPARATOR, ini_get("include_path")) as $path) {
if (strlen($path) > 0 && $path{strlen($path)-1} != DIRECTORY_SEPARATOR) {
$path .= DIRECTORY_SEPARATOR;
}
$f = realpath($path.$filename);
if ($f && is_file($f)) {
return $f;
}
}
return FALSE;
}
con search_include_path puoi fare tranquillamente
Codice PHP:
$tplMain= new w_Template('/user/main.htm');
La logica della paginazione è nel codice
non nel template (nell'esempio è per essere
precisi nel framework) sono d'accordo con te
che nel template ci deve stare solamente
lo stretto necessario (meno codice e logica c'è
e meglio è)