Templates PHP: Dicas de como usar, bibliotecas e exemplo

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.