O uso de templates em PHP

Qualquer webmaster que enfrentou a miss�o de manter um site de m�dio a grande porte, sabe a dificuldade que isso significa, principalmente no que diz respeito a rela��o entre o design e a programa��o. Alterar dezenas de p�ginas cada vez que um detalhe de design, como uma cor de fundo ou uma imagem, � alterado � uma tarefa desgastante.

Mas, para al�vio de todos, existe uma solu��o para o problema e esta solu��o est� nos templates. Os templates, ou modelos, tem por finalidade separar o design, a parte HTML, da programa��o, no nosso caso, o PHP.

Existem diversas implementa��es de templates em PHP, e uma breve busca no freshmeat.net pode trazer v�rias op��es.Foi numa destas buscas que encontrei a implementa��o desenvolvida por Sunil Baek , Kongyeol Baek , Sungyoon Lee e Kwangjin Na . Na verdade este m�dulo de templates faz parte do webmail Netmania e pode ser copiado no link . Sua vantagem em rela��o a outros como o FastTemplate � a facilidade.

Exemplo de template:
<BODY bgColor="#FFFFFF"> <p>&nbsp;</p> <p>&nbsp;</p> <center> <table border="0"> <tr> <td align="right" bgcolor="#0b740b"> <table border="0" cellspacing="0" cellpadding="0"> <tr bgcolor="#0b740b"> <td width="100%"><font color="white" size="2"><b>#TITULO&nbsp;</b></font></td> </tr> </table> <table border="3" bordercolor="#0b740b" cellspacing="0" cellpadding="0"> <tr bgcolor="silver"> <td width="100%"> #TABLE_CENTRAL #TABLE_FINAL </td> </tr> </table> </td> </tr> </table> </center> </body> </html>

Na verdade o template � um simples arquivo HTML com apenas algumas modifica��es. As palavras come�ando com # (#TITULO, #TABLE_CENTRAL,#TABLE_FINAL) s�o as partes do modelo que ser�o alteradas pelo script PHP. No exemplo, caso se precise alterar as configura��es de bgcolor ou alguma outra, todas as p�ginas que usam o modelo sofrem as altera��es.

No exemplo abaixo, o script PHP que usa o template:

<?php include("template.lib"); $TITULO = "P�gina Exemplo"; $TABLE_CENTRAL = ' <table border="0"> <tr> <td>Teste de Tabela</td> </tr> </table> '; $TABLE_FINAL = ' <table border="0"> <tr> <td>Sair</td> </tr> </table> '; ReadTLE("teste.tle"); ?>

O script acima � apenas um exemplo do que pode-se fazer com um pouco de criatividade. A instru��o ReadTLE("teste.tle"); faz a mesclagem dos dados usando as vari�veis do modelo (#TITULO,...) e a imprime para o navegador.

Outro exemplo um pouco mais complexo � o seguinte:

<html> <body> <table border="1"> #LOOP (#TABLE_BODY) <tr> <td>#NOME</td> </tr> #ENDLOOP </table> #MSG </body> </html>

Neste caso definimos um loop para o conte�do da tabela. O script abaixo faz uso deste modelo :

<?php include("template.lib"); for($i=0;$i<4;$i++){ $TABLE_BODY[$i] = $i; $NOME[$i] = "nome$i"; } $MSG = "Mensagem final"; /* template section */ ReadTLE("teste.tle"); ?>

Com este recurso de loop, pode-se criar diversas combina��es e aumentar a capacidade do modelo. O uso de templates tem se mostrado muito �til em diversos projetos que estou paticipando, e esta implementa��o com certeza � uma das mais simples e poderosas.

Elton Lu�s Minetto
elm@unochapeco.edu.br
http://www.unochapeco.edu.br/~elm/