Templating PHP

Estou escrevendo uma camada de modelagem simples em PHP, mas fiquei um pouco preso. Veja como funciona no momento:

Primeiramente eu usofetch_template para carregar o conteúdo do modelo do banco de dados - isso funciona (e eu coleciono todos os modelos na inicialização, se você estiver interessado).

Eu uso variáveis PHP no código do meu modelo e na lógica - por exemplo:

// PHP:
$name = 'Ross';

// Tpl:
<p>Hello, my name is $name.</p>

Então eu usooutput_template (abaixo) para analisar as variáveis no modelo e substituí-las. Anteriormente, eu estava usando tags de modelo com umstr_replace classe de modelo, mas era muito ineficiente.

/**
 * Returns a template after evaluating it
 * @param   string  $template   Template contents
 * @return  string  Template output
 */
function output_template($template) {
    eval('return "' . $template . '";');
}

Meu problema, se você ainda não adivinhou, é que as variáveis não são declaradas dentro da função - portanto, a função não pode analisá-las em$template a menos que eu os coloque no escopo global - o que não tenho certeza se quero fazer. Isso ou tem uma matriz de variáveis como parâmetro na função (que soa ainda mais entediante, mas possível).

Alguém tem outras soluções além de usar o código da função (é apenas uma linha) no meu código, em vez de usar a função?

Obrigado Ross

P.s. Eu sei sobre o Smarty e a vasta gama de motores de modelos disponíveis no mercado - eu não pretendo usá-los, por isso não os sugira. Obrigado!

questionAnswers(4)

yourAnswerToTheQuestion