Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hinom

[Resolvido] MVC em PHP - part 004, Library Template

Recommended Posts

004 - Library Template

 

 

app\lib\Template.php

<?php
/** Template Engine Class
 *
 *   company: Foo Bar corp. 
 *   autor: mr. foo 
 *   email: info@foo.bar
 *   website: foo.bar
 *   updated: 2005-03-18 11:55:10 - mr. foo
 *
 *   Methods
        Compile
*/

class Template
{
 
    public $tag    = false;                 // engine array name
    public $output = false;                 // print, read
    private $path;

    function Compile( $data, $dir = false, $file = false ) 
    {


        // verifica o tipo de retorno definido no arquivo de configurações gerais
        if( !$this->output )
        {
            $this->output = TEMPLATE_OUTPUT;
        }

        // verifica a nomenclatura da tag definida no arquivo de configurações gerais
        if( !$this->tag )
        {
            $this->tag = TEMPLATE_TAG;
        }

        $k   = $this->tag;
        $$k  = $data;
        unset( $data );
        unset( $k );

        // obtém o caminho do diretório base dos arquivos de templates, definido no arquivo de configurações gerais
        $this->path = TEMPLATE_DIR;

        // se o parâmetro opcional possui um valor, será adicionado ao caminho do diretório base dos arquivos de templates como subdiretório.
        if( $dir )
        {
            $this->path .= $dir;
        }

        // adiciona o caminho formatado ao core "include_path"
        ini_set( 'include_path', $this->path . PS . ini_get( 'include_path' ) . PS . TEMPLATE_DIR . LANG . DS );

        //echo $this->path . $file; exit; // debug purposes only

        if( $fp = @fopen( $this->path . $file, 'r' ) )
        {

            $src = '';
            while( !feof( $fp ) )
            {
                $src .= fread( $fp, 65536 ); 
                flush(); // this is essential for large files
            }  
            fclose( $fp ); 

            // compila o conteúdo dentro do eval e atribui a uma variável
            ob_start();
            eval( "?>" . $src ); 
            $__r = ob_get_contents(); 
            ob_end_clean(); 
            unset( $src );

            flush();

        }else{
            $__r = 'ERROR: FILE NOT EXISTS';
        }

        // se o retorno estiver definido como "print", o contrutor echo imprimirá o valor diretamente
        if( $this->output == 'print' )
        {
            echo $__r;
            unset( $__r );
            return null;
        }

        // caso a condicional acima retorne falso, o retorno será o valor da variável
        $this->output = 'print';
        return $__r;
    
    }


} // end template class
 

 
?>

 

 

 

 

 

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Índice

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 003 - Inicializadores e Configurações Gerais

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 005 - Módulo "Home"

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.