sexta-feira, 13 de junho de 2008

Sistemas de Templates Engines - SMARTY

Introdução

Antes de começarmos a detalhar assuntos técnicos, gostaria de postar alguns artigos básicos, para que leitores menos experientes em PHP venham se familiarizar com alguns conceitos e ferramentas que vamos utilizar com freqüência em nossos artigos, já saindo um pouco da programação procedural e/ou convencional, gostaria de falar um pouco sobre uma das melhores ferramentas para desenvolvimento em PHP, trata-se do SMARTY. Um sistema de templates para PHP que dentre outras funções, destaco a agilidade no desenvolvimento de aplicativos, pois traz a possibilidade de designes e programadores trabalharem no mesmo projeto, ao mesmo tempo de maneira independente/separada.

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.
Fonte: http://www.smarty.net

Um comentário:

Unknown disse...

Bom dia Hielbert,

Parabéns pela iniciativa do curso e do blog. É ótimo ver a comunidade PHP crescendo no Piauí.

Desejo muito sucesso a você e a toda a equipe do 180graus, em especial ao Helder e ao Cláudio Costa.