Por que utilizar Smarty?

Update: novo endereço em http://rodrigo.cmachado.org/blog/2007/11/por-que-utilizar-smarty/

A grande dúvida é: eu preciso de uma engine de templates? Sim, você precisa. Por quê? Isso é o que vou explicar nos próximos parágrafos.

Uma engine de templates permite uma maior facilidade para a construção de páginas web, pois separa o conteúdo da lógica de negócio. Em outras palavras: se você precisar corrigir uma palavra incorreta, por exemplo, não precisará procurar essa palavra em um código PHP abarrotado de funções e objetos, mas apenas em um arquivo HTML simples, com algumas poucas estruturas de programação. É desnecessário dizer que o tempo gasto na correção é infinitamente menor no último caso.

No entanto é importante ressaltar que cada situação deve ser analisada individualmente. Devem ser verificados todos os aspectos da implantação da engine, incluindo o “treinamento” da equipe e adaptação de código existente, se for o caso.

Quando se fala em engine de templates para PHP a resposta quase unânime é Smarty (alguém conhece alguma outra?). Mas porque essa engine em particular é tão famosa? A seguir algumas pistas…

  • Ter um endereço .php.net: bem ou mal, confere uma certa credibilidade. Num primeiro momento, qual dos dois endereços pareceria conter a engine mais estável e madura? http://smarty.php.net/ ou http://www.provedor.com/~fulano/smarty/?
  • Semelhança com o PHP: como o código de template lembra algumas estruturas de um código PHP, é mais fácil e rápido desenovolver utilizando Smarty.
  • Sistema de compilação: os templates são compilados para PHP, o que evita que seja feito o parse do template a cada requisição.
  • Cache: além do processo de compilação descrito acima, é possível também ativar o cache (que armazena uma versão estática de alguns ou todos os elementos da página).
  • Plugins: de que adianta um sistema ótimo, mas que não pode ser extendido com facilidade? O Smarty possui uma arquitetura simples para criação de plugins.

Vou omitir as vantagens mais óbvias (modificadores de variável, loops, etc.), por uma questão de tamanho do post :).

Mas você pode estar se perguntando: “meu site possui apenas meia dúzia de páginas; é realmente necessário utilizar uma engine de templates?”. Claro que para sites bem pequenos, implementar uma engine pode não compensar. Mas, para qualquer site que tenha alguma pretensão de crescimento, eu recomendaria a implatanção da engine logo do início do projeto, evitando assim o “retrabalho”, tão conhecido dos profissionais de web (principalmente de empresas pequenas 🙂 ).

Outros podem dizer que a implatação de uma engine de templates pode causar um overhead no site. A esses críticos arrisco dizer que o overhead causado não é maior do que a dor de cabeça na manutenção do código. Além do mais, no caso do Smarty pelo menos, os templates são compilados para PHP – no fim das contas, é um script PHP processando alguns vetores. Se você considerar o mecanismo de cache do próprio Smarty, esse carga extra desaparece.

Outra crítica se refere ao fato do Smarty utilizar estruturas comuns a linguagens de programação, o que teoricamente atrapalharia os designers (!) ao mexer no HTML. Alguém aí já viu designer montando o HTML na mão? Uma das poucas engines que vi (se não a única) que não possuía estruturas semelhantes a uma linguagem de programação é a utilizada pelo CMS Spip. Particularmente, acho um lixo. Para fazer qualquer coisa útil, é necessário utilizar uma estrutura escrita em francês (!!) e que não se parece com nenhuma linguagem de programação (que eu me lembre).

Alguns podem optar por desenvolver uma engine de templates própria, mas isso só deve ser feito se existir um bom motivo. Dificilmente essa engine será mais eficiente do que as que já estão no “mercado” sendo testadas em ambientes de produção.

No fim, o custo do overhead torna-se imperceptível e a facilidade de manutenção e expansão do sistema fica evidente ao utilizar uma engine de templates.

2 Respostas to “Por que utilizar Smarty?”

  1. Brisbane web site design Says:

    this is something really tough , can i get this in english plz ?


Comentários encerrados.