Como funciona a engine de renderização padrão do Drupal 7 PHPTemplate Engine
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():
function theme_render_template($template_file, $variables) { // Extract the variables to a local namespace extract($variables, EXTR_SKIP); // Start output buffering ob_start(); // Include the template file include DRUPAL_ROOT . '/' . $template_file; // End buffering and return its contents 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:
$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!