A principal função de templates PHP é separar todo o código PHP da interface HTML.
Existem diversas soluções no mercado, algumas presentes há anos. Talvez a mais utilizada seja a Smarty para criar templates php. Outra que também é bastante utilizada é Template Power.
Talvez a Template Power seja um plus mais leve para sua biblioteca, mas a preferência por qual usar deve ser de escolha do programador. Fica aqui apenas a dica dessas bibliotecas para usar templates PHP.
Outra maneira simples para usar templates com PHP, é as funções que passamos abaixo.
A estrutura para templates PHP
Nessa estrutura HTML abaixo, marcamos algumas tags que serão as referências para o código PHP fazer as substituições por valores dinâmicos.
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>{titulo}</title>
</head>
<body>
<section>
<article>
<header>
<h1>{artigo_titulo}</h1>
</header>
<div>{artigo_conteudo}</div>
</article>
</section>
<footer>{rodape}</footer>
</body>
</html>
Usando os símbolos de chaves “{}”, marcamos itens no HTML para serem substituídos.
Agora, para fazer a alteração das marcações, vamos criar duas funções bem simples, conforme abaixo:
function getTemplate( $template, $folder = "templates/" )
{
$arqTemp = $folder.$template; // criando var com caminho do arquivo
$content = '';
if ( is_file( $arqTemp ) ) // verificando se o arq existe
$content = file_get_contents( $arqTemp ); // retornando conteúdo do arquivo
return $content;
}
A função getTemplate é responsável por ler o arquivo e retornar ele com as tags de marcação. Já a função parseTemplate é quem vai ler o template carregado e substituir as tags de marcação.
Veja abaixo um arquivo PHP que irá utilizar as funções para criar templates em PHP.
function parseTemplate( $template, $array )
{
foreach ($array as $a => $b)// recebemos um array com as tags
$template = str_replace( '{'.$a.'}', $b, $template );
return $template; // retorno o html com conteúdo final
}
$arrTags = array(
'titulo'=>'Dicas de PHP',
'artigo_titulo'=>'Templates em PHP - Dicas de PHP',
'artigo_conteudo'=>'Demonstração de como criar um sistema simples de templates com PHP',
'rodape'=>'© Dicas de PHP - Todos direitos reservados 2012 '
);
$template = getTemplate( 'templates/dicas.html' );
$templateFinal = parseTemplate( $template, $arrTags );
echo $templateFinal; // output do código
O resultado final do código, deve ser o HTML abaixo:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>Dicas de PHP</title>
</head>
<body>
<section>
<article>
<header>
<h1>Templates em PHP - Dicas de PHP</h1>
</header>
<div>Demonstração de como criar um sistema simples de templates com PHP</div>
</article>
</section>
<footer>© Dicas de PHP - Todos direitos reservados 2012 </footer>
</body>
</html>
Esse código é facilmente adaptado para usar template em PHP.
No padrão MVC no PHP isso é muito útil para separar as camadas de códigos, como os controllers, models e views.