Capítulo 1. O que é o Smarty?
O Smarty é um sistema de templates para PHP. Mais especificamente, ele fornece uma maneira
fácil de controlar a separação da aplicação lógica e o conteúdo de sua apresentação. Isto é
melhor descrito em uma situação onde o programador da aplicação e o designer do template executam
diferentes funções, ou na maioria dos casos não são a mesma pessoa.
Por exemplo, digamos que você
está criando uma página para web para mostrar um artigo de um jornal. O autor, a manchete,
a conclusão e o corpo do artigo são elementos de conteúdo, eles não contém informação alguma
sobre como eles devem ser mostrados. Ele são enviados ao Smarty pela aplicação, então o designer
do template edita o template e usa uma combinação de tags HTML e tags de templates para formatar
a apresentação destes elementos (tabelas HTML, cores de fundo, tamanhos de fontes, folhas de estilos, etc.).
Se algum dia o programador precisar alterar a maneira como o conteúdo do artigo é tratado (uma mudança na
lógica da aplicação). Esta mudança não afeta o design do template, o conteúdo será enviado ao template
exatamente da mesma forma. De modo semelhante, se o designer do template quiser redesenhar completamente
os templates, não é necessária nenhuma alteração na lógica da aplicação. Sendo assim, o programador
pode fazer mudanças na lógica da aplicação sem a necessidade de reestruturar os templates, e o designer
do template pode fazer mudanças nos templates sem alterar a lógica da aplicação.
Um objetivo do projeto Smarty é a separação da lógica do negócio e da lógica da apresentação.
Isto significa que os templates podem certamente conter a lógica sob a circunstância que é somente
para apresentação. Alguns exemplos são: a inclusão de outros templates, alternação de cores nas linhas
das tabelas, colocar o texto de uma variável em maiúsculo, percorrer uma matriz de dados e mostrá-la, etc.
são todos exemplos de apresentação lógica. Isto não significa que o Smarty força a separação da lógica de
negócios e da lógica de apresentação. O Smarty não tem conhecimento do que é o que em sua aplicação, portanto
colocar sua a lógica de negócio no template é problema seu. Caso você deseje que não haja nenhuma lógica
em seus templates você pode certamente fazer isso trocando o conteúdo para textos e variáveis somente.
Um dos aspectos únicos do Smarty é seu sistema de compilação de templates. O Smarty lê os arquivos
de templates e cria scripts PHP à partir deles. Uma vez criados, eles são executados sem ser necessário
uma outra compilação do template novamente. Com isso, os arquivos de template não são 'parseados'(analisados)
toda vez que um template é solicitado, e cada template tem a total vantagem de soluções de cache do
compilador PHP, tais como: Zend Accelerator (http://www.zend.com/) ou PHP Accelerator
(http://www.php-accelerator.co.uk).
Algumas das características do Smarty:
Ele é extremamente rápido.
Ele é eficiente visto que o interpretador do PHP faz o trabalho mais pesado.
Sem elevadas interpretações de template, apenas compila uma vez.
Ele está atento para só recompilar os arquivos de template que foram mudados.
Você pode fazer funções próprias
e seus próprios modificadores de variáveis, assim
a linguagem de templates é extremamente extensível.
Delimitadores de tag
configuráveis, sendo assim você pode usar {}, {{}}, <!--{}-->, etc.
Os construtores if/elseif/else/endif são passados
para o interpretador de PHP, assim a sintaxe de expressão {if ...} pode ser tanto simples quanto
complexa da forma que você queira.
Aninhamento ilimitado de sections,
ifs, etc. permitidos.
É possível embutir o código PHP diretamente em
seus arquivos de template, apesar de que isto pode não ser necessário (não recomendado) visto que a
ferramenta é tão customizável.
Suporte de caching embutido.
Fontes de template arbitrários.
Funções de manipulação
de cache customizadas.
Arquitetura de Plugin.