Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/09/2010, 15:34
ncoola
 
Fecha de Ingreso: enero-2009
Mensajes: 5
Antigüedad: 15 años, 3 meses
Puntos: 0
Ayuda con objetos

Hola, estoy buscando la manera de crear un sistema de plantillas y me he topado con este codigo:

Código:
<?
class plantilla{
        function plantilla($template_file){
                $this->tpl_file = 'plantillas/' . $template_file . '.tpl';
        }
        
        function asigna_variables($vars){
                $this->vars= (empty($this->vars)) ? $vars : $this->vars . $vars;
        }
        
        function muestra(){
                if (!($this->fd = @fopen($this->tpl_file, 'r'))) {
                        sostenedor_error('error al abrir la plantilla ' . $this->tpl_file);
                } else{
                        $this->template_file = fread($this->fd, filesize($this->tpl_file));
                        fclose($this->fd);
                        $this->mihtml = $this->template_file;
                        $this->mihtml = str_replace ("'", "\'", $this->mihtml);
                        $this->mihtml = preg_replace('#\{([a-z0-9\-_]*?)\}#is', "' . $\\1 . '", $this->mihtml);
                        reset ($this->vars);
                        while (list($key, $val) = each($this->vars)) {
                                $$key = $val;
                        }
                        eval("\$this->mihtml = '$this->mihtml';");
                        reset ($this->vars);
                        while (list($key, $val) = each($this->vars)) {
                                unset($$key);
                        }
                        $this->mihtml=str_replace ("\'", "'", $this->mihtml);
                        echo $this->mihtml;
                }
        }
}
?>
Y no entiendo desde: $this->mihtml = preg_replace('#\{([a-z0-9\-_]*?)\}#is', "' . $\\1 . '", $this->mihtml); que es donde pasa de ser {variable} a $variable

Tambien si me podeis explicar la funcionalidad de la doble $, me acuerdo de haberlo usado pero no de para que servia.

En link de la pagina del codigo: http://www.cristalab.com/tutoriales/creacion-y-uso-de-plantillas-o-templates-en-php-c132l/

Gracias!