Se você ainda não conhece o Smarty, ele é uma biblioteca que permite a separação do código (programação) do design (visualização) das páginas e com sua utilização se tem um bom ganho no tempo de processamento da página. Com sua utilização, o desenvolvimento em camadas fica mais simples. Na empresa onde trabalho, desde que iniciamos a utilização dessa bilioteca (framework), tivemos um enorme ganho de rendimento, tempo de processamento e conseguimos “separar” as funções de cada um, ou seja, programador programa (php) e designer, cuida do layout (css, imagens, etc …).


Para quem desenvolve para web (nosso caso), a separação das funções é quase uma “necessidade”, para que não se tenha tanto retrabalho. Nesse artigo vou apenas dar uma visão geral do Smarty para quem está iniciando e nos próximos irei focar mais em algumas utilizações.

Bom, para começar, baixe a bilioteca em http://smarty.php.net/download.php. Não é preciso configurar nada, o único requisito é ter o PHP 4.0.6 ou superior instalado e o Apache (servidor web), claro !

Depois de baixar os arquivos, descompacte e os coloque no seu servidor (pasta htdocs). Sugiro a instalação na raiz (ex: htdocs/Smarty), para que possa utilizar a bilbioteca em todos os projetos. Para usuários mais avançados …. tem como instalar a bilioteca no path, para que não precise ficar “incluíndo” em todos os arquivos (ver manual). E está feita a instalação !!!

Algumas dicas, para você que está iniciando:

  • Você faz um arquivo PHP, que faz o “serviço sujo” (cálculos, consultas no banco de dados, etc). Esse arquivo vai “dizer” em que template que deve ser “informado” esses valores/variáveis. Então o Smarty vai pegar essas variáveis e vai “integrar” com a template, criando um arquivo compilado;
  • Então,você terá 3 arquivos: 1 php, 1 template e 1 template complada, sendo que o programador vai trabalhar com o php, o designer com a template e a template compilada é com o Smarty;
  • Em algumas situações, será necessário uma “mini-programação” na template, utilizando então, funcionalidades do próprio Smarty;

Vou simular uma situação, para que fique mais fácil a explicação: Digamos que você tem um projeto que se chama teste, então você teria a seguinte estrutura:

/Smarty
/teste

Então dentro da pasta teste, crie 2 outras pastas: template e compilados, onde em template estarão as suas templates e em compilados estarão as templates compiladas. E agora, vamos a um exemplo:

Arquivo chamado teste.php e salve o mesmo na pasta teste:
include_once ('../smarty/libs/Smarty.class.php');
$smarty = new Smarty; //Cria o objeto do Smarty
$smarty->template_dir = 'template/'; //Pasta de templates
$smarty->compile_dir = 'compilados/'; //Pasta de templates compilados
$mensagem = "Aqui você pode deixar uma mensagem para o usuário. Essa string também pode ser o resultado de uma consulta no banco de dados, etc";
$smarty->assign('saudacao','Olá'); //função que envia o valores para a template $smarty->assign('nome','Fulano');
$smarty->assign('mensagem',$mensagem);
$smarty->display('teste.tpl'); //Função do smarty que vai "integrar" as variáveis com a template e compilar tudo e "jogar" na tela

Arquivo chamado teste.tpl e salve o mesmo em teste/template:

{$saudacao} ! {$nome}
{$mensagem}

O exemplo vai ter como Resultado:
Olá Fulano !
Aqui você pode deixar uma mensagem para o usuário. Essa string também pode ser o resultado de uma consulta no banco de dados, etc

Esse foi um exemplo bem simples e bem geral do que pode ser feito. Nos próximos artigos sobre Smarty, irei colocar alguns exemplos mais práticos (mais avançados). Sugiro a leitura da documentação (em português), disponível em : http://smarty.php.net/manual/pt_BR/, para que possa se ter uma idéia do que é possível fazer com a utilização do Smarty.

Até o próximo artigo.