Antes de responder a pergunta feita no título desse post primeiro precisamos entender o que é template engine, o que é Smarty e por que usar uma template engine?.
O que é Template Engine?
Template Engine (motor de template) é um processo, parte de um software ou um software, capaz de receber um ou mais documentos formatados, um ou mais modelos de dados, compilá-los e retornar um ou mais documentos de saída.
De forma bem simples, o template engine é a parte de um programa responsável por pegar um arquivo de modelo (template), que representa a saída do programa e preenchê-lo com dados da execução atual, retornando o documento final para o usuário.
Logo, tem-se que o código de processamento (Controller) está separado do código da visualização (View), podendo assim alcançar o padrão de arquitetura MVC.
O que é Smarty Template Engine?
Existem várias Template Engines para várias linguagens de programação. Inclusive, vários frameworks, como o Django (para Python) possuem sua própria engine.
PHP, como linguagem, não é diferente e possui um conjunto de aplicações do tipo Template Engine. Dentre essas aplicações existe o Smarty.
Smarty é a Template Engine mais popular para PHP, e me atrevo a dizer que Smarty é a template engine mais popular dentre todas as template engines de todas as linguagens.
Basta tentar uma busca no Google pelo termo template engine, e você verá logo após o artigo do Wikipedia quem aparece.
Também, o projeto Smarty existe desde 2002, o que dá uma certa credibilidade em relação as engines mais novas.
Utilizo o Smarty desde que o vi pela primeira vez, em 2006.
Desde então, não sei programar PHP sem utilizá-lo!
As vezes procuro novas templates engines para não ficar preso/bitolado no Smarty, mas para PHP nenhuma engine conseguiu chamar minha atenção.
Por que usar uma template engine?
O primeiro motivo é querer separar o código HTML (ou outra forma de saída do seu script) do seu código PHP é evitar o código spaghetti, que é quando tem-se aquela bagunça de, no mesmo arquivo (código-fonte) termos PHP-Html-JavaScript-CSS, tudo junto e misturado, o que é bem comum no mundo PHP (MAS NÃO DEVERIA SER COMUM!)
O segundo motivo é a manutenção.
Quando utilizamos uma template engine, separando o código-fonte (controller) do layout(view), podemos fazer várias alterações no layout final sem nem sequer precisar abrir o arquivo do código fonte.
Por exemplo, levem em consideração o WordPress. Ele separa o código da plataforma de blog do código do layout. Podemos então alterar várias vezes o layout do blog sem nem sequer abrir o código fonte da plataforma de blog.
Porém, o WordPress não usa uma template engine. O que ele faz é importar e executar arquivos PHP que definem o layout.
O terceiro motivo é trabalhar com designers.
Na facilidade (e problema) citado no exemplo do WordPress, o nosso caro designer teria que aprender a programar em PHP para conseguir fazer um layout.
Não é legal.
Sem querer ofender ninguém, mas designers não estudam para isso e podem não ter uma “mente lógica e algorítmica” que muitos programadores possuem. Claro que existem exceções, e temos por ai grandes designers-programadores.
Mas, quando trabalhamos em uma equipe de desenvolvimento, queremos manter cada membro focado na sua atividade. Ter que fazer o designer aprender PHP ou ter que migrar o layout de HTML para PHP pode representar perca de foco, tempo e dinheiro.
Para isso, as template engines implementam pequenas funções chaves (tags), como loops para preencher os options dentro de um campo select.
O designer não precisa aprender a programar. O que ele precisa é conhecer as tags da template engine, que são poucas, e conhecer o nome das variáveis que virão do código-fonte, que pode ser definido na documentação do projeto.
Smarty Template Engine: Usar ou não?
Agora podemos responder a pergunta feita no post desse artigo.
Se você acredita que seu projeto precisa atingir pelo menos 1 dos três pontos supra-citados e este será programado em PHP, você é um forte candidato a utilizar o Smarty.
Você pode optar por usar outra template engine, mas para finalizar este artigo, e responder a pergunta Smarty Template Engine: Usar ou não? gostaria de citar alguns pontos que me fizeram escolher esta ferramenta e que me fazem permanecer com ela por 6 anos consecutivos.
- Eficiência – quem faz o trabalho é o PHP.
Um das tarefas executadas pelo Smarty é traduzir o seu template para PHP. Logo, seu template é analisado pelo PARSER do PHP, o que torna a tarefa Smarty simples e rápida. - Sem Retrabalhos – Smarty não possui overhead.
Em sua primeira execução, o template é traduzido para PHP, análisado pelo parser do PHP e salvo. Nas futuras execuções, basta executar o arquivo PHP gerado em conjunto com os dados passados pela aplicação.
Assim, não existe o retrabalho de sempre executar a operação de tradução e PARSER do template.
Smarty percebe se seu template foi modificado e, então, o recompila. - Cache – Com cache, não há retrabalho.
O template é compilado e salvo junto com os dados da execução para ser reutilizado sem precisar ser TRADUZIDO, PARSEADO, COMPILADO JUNTO COM OS DADOS.
Basta apenas ser exibido para o usuário.
Simples assim. - Herança de Templates – Uma forma simples e intuitiva de reutilizar códigos de template no seu projeto.
Assim, escrevendo menos e produzindo mais!
Herança de Templates é uma idéia nova, muito bem utilizada no Django. - E MUITO MAIS! – Parecendo um vendedor de itens pela tv, mas é verdade!
Tags customizáveis, delimitadores, um conjunto de tags úteis que fazem muito em apenas uma linha, capacidade de plugins, facilidade de tornar um template internacionalizado (vários arquivos de lingua, um arquivo de template), etc
E ai, vai usar ou não?



