No Drupal 7, temos a famosa PHPTemplate Engine para renderização dos templates.
Na verdade, a função theme() permite que se sobrescreva a engine de renderização de template.
Porém, por padrão, é usada essa função theme_render_template():
1 2 3 4 5 6 7 8 9 10 11 12 13 | function theme_render_template( $template_file , $variables ) {
extract( $variables , EXTR_SKIP);
ob_start();
include DRUPAL_ROOT . '/' . $template_file ;
return ob_get_clean();
}
|
Basicamente, usamos a função ob_start, para interromper a saída do script PHP e começar a gravar tudo em um buffer. (ob é a abreviação de output buffer, ou seja, buffer de saída e não isto aqui)
Aí, fazemos um include do arquivo de template. Esse include irá simplesmente enviar para a saída o resultado do arquivo de template, já substituindo as variáveis locais extraídas pela função extract.
A função finaliza retornando com ob_get_clean, que interrompe o processo de jogar a saída no buffer e retorna tudo o que foi gerado para uma string.
Antes de encerrar o post curto, queria apenas mostrar o que é possível fazer com a função extract:
1 2 3 4 5 6 7 | $var_array = array ( "cor" => "azul" ,
"tamanho" => "medio" ,
"forma" => "esfera" );
extract ( $var_array );
echo "$cor, $tamanho, $forma, n" ;
|
Ou seja, as variáveis $cor, $tamanho e $forma aparecem como variáveis locais após o uso da função extract!