Gracias por la respuesta,
A ver, asi pensando, si lo hago asi como tu dices, ¿ mas especificamente como se haria ? Es decir, puesto que no le pasas parametros con los datos de por ejemplo la barra izquierda, leftsidebar(), lo que haria seria tener un metodo para cargar los datos en una variable global de la clase view/template o como quieras que se llame, y entonces en leftsidebar(), en el codigo de este metodo, poner que siempre coja y cargue los datos de esa variable global en la plantilla de la columna izquierda, osea que devuelva un flujo de salida con los datos de la variable esta global ya puestos con la plantilla y todo para la columna izquierda.
Perdona si me he liado al explicarlo, espero que me entiendas.
Yo venia haciendolo de otra manera hasta que vi un manual bastante decente de MVC y decidi enfocar el controlador de otra manera, y no se si tambien hare lo mismo con la vista. Yo lo que hacia era:
Código PHP:
<div id="header"></div>
<div id="container">
* * * <div id="left">{leftsidebar}</div>
* * * <div id="main">{content}</div>
* * * <div id="right">{rightsidebar}</div>
</div>
y luego
Código PHP:
abstract class clase_vista {
private $nombre;
private $html;
public function __construct(){
//$this -> html = $this->dame_plantilla( NOMBRE_PLANTILLA_BASE );
}
private function dame_plantilla( $nombre_plantilla ) {
$file = $_SERVER['DOCUMENT_ROOT'].URL_HTML.$nombre_plantilla.'.htm';
$plantilla = file_get_contents($file);
return $plantilla;
}
protected function carga_plantilla_principal( $nombre_plantilla ) {
$this->html = $this->dame_plantilla( $nombre_plantilla );
}
protected function coloca_plantilla( $nombre_plantilla, $localizacion_html ) {
if ( $nombre_plantilla && $localizacion_html ){
$plantilla = $this->dame_plantilla( $nombre_plantilla );
$this->html = str_replace('{'.$localizacion_html.'}', $plantilla, $this->html);
}
}
protected function coloca_dato( $datos, $localizacion_html ) {
if ( $datos ){
$this->html = str_replace('{'.$localizacion_html.'}', $datos, $this->html);
}
}
protected function coloca_datos( $datos) {
if ( $datos )
foreach ( $datos as $clave => $valor )
$this->html = str_replace('{'.$clave.'}', $valor, $this->html);
}
protected function imprime_plantilla() {
print ($this->html);
}
abstract public function dame_vista();
}
¿ No quedan mas limpias las plantillas de esta forma siendo estas ficheros html ?, parece una manera un poco mas elegante de hacerlo. Aunque no se.