Micro template

En mis desarrollos de WordPress utilizo esta pequeña clase para mantener en código un poco más ordenado. La forma más básica es :


class MicroTemplate {
    protected $template_dir;
    protected $templateVar  = 'template';

    public function __construct($templatedir = FALSE) {
       if($templatedir){
         $this->template_dir = rtrim($templatedir, '\\/');
       }else{
         $this->template_dir = dirname(__FILE__);
       }
    }

    public function setDir($templatedir){
        $this->template_dir = rtrim($templatedir, '\\/');
    }

    public function display($file){
        ${$this->templateVar} = $this;
        include ($this->template_dir.DIRECTORY_SEPARATOR.$file);
    }

    public function getContent($file){
        ${$this->templateVar} = $this;
        ob_start();
        include ($this->template_dir.DIRECTORY_SEPARATOR.$file);
        $content = ob_get_contents();
        ob_end_clean();
        return $content;
    }

    public function __set($name, $value) {
        $this->{$name} = $value;
    }

    // Si una vatiable no está definida devuelve un string vacío
    public function __get($name){
        return '';
    }

}

Como podéis ver su uso es muy simple:

creo un template: mitemplate.phtml (me gusta usar la extensión phtml, pero naturalmente puede ser php)

<p>
  Texto :
  <?= $template->va1; ?>

   Otro texto
  <?= $template->va2; ?>
</p>

Nota: El nombre de la variable ‘$template’ viene definido en la clase, pudes poner el que quieras.

Y le asigno las variables de la forma

$Mytemplate = new $(directorio_del_template);
$Mytemplate->va1 = 'val1';
$Mytemplate->val2 = 'val2';

Mytemplate->display(' mitemplate.phtml');
/* o   $content = $Mytemplate->getContent($file);
 si quiero guardar el resultado en una variable. */

Posted in php