Smarty - the compiling PHP template engine
Em primeiro lugar, o Smarty é uma biblioteca de templates. O que ele faz é abrir um arquivo de templates e criar um arquivo PHP, ou seja, transformar o template em PHP.
ALGUMAS FEATURES DO SMARTY:
- Ele é customizável. Pode-se, por exemplo, escolher o delimitador das tags de templates. Usualmente são as chaves "{" e "}";
- É extremamente rápido;
- Utiliza de cache para compilar os templates o mínimo de vezes possível;
- Pode ser adicionado código PHP dentro do template;
- Você pode criar funções extras que não são nativas do Smarty.
- Utiliza construtores if/else/elseif/foreach/section e isso pode ser feito de forma recursiva!
- Pode ser inserido comentários dentro do Smarty;
EXEMPLOS DE USO
-- carregando o Smarty
-- index.tpl
<html>
Ola, bem vindo à {$Title}!
<br>
Pessoas que já passaram por aqui:
{section name=customer loop=$Names}
{$Names[customer]}<br>
{if $Names[customer] == "Gary"}
Esse tal de {$Names[customer]} é legal!<br>
{elseif $Names[customer] == "James"}
Já o {$Names[customer]} veio aqui na página e nao gostou do Smarty!
{/if}
{/section}
</html>
Se você ficou interessado pelo Smarty, você pode baixá-lo gratuitamente (ele é LGPL) em:
http://smarty.php.net
Baixe a última versão, atualmente o Smarty está na versão 2.0.1
Ficou interessado no motivo do smarty ter um subdomínio dentro do php.net? Ocorre que a comunidade PHP gostou muito do Smarty e apoiaram o projeto.
Outra hora eu adiciono outro artigo sobre o Smarty! Façam bom uso da ferramenta!
ALGUMAS FEATURES DO SMARTY:
- Ele é customizável. Pode-se, por exemplo, escolher o delimitador das tags de templates. Usualmente são as chaves "{" e "}";
- É extremamente rápido;
- Utiliza de cache para compilar os templates o mínimo de vezes possível;
- Pode ser adicionado código PHP dentro do template;
- Você pode criar funções extras que não são nativas do Smarty.
- Utiliza construtores if/else/elseif/foreach/section e isso pode ser feito de forma recursiva!
- Pode ser inserido comentários dentro do Smarty;
EXEMPLOS DE USO
-- carregando o Smarty
<?php require("Smarty.class.php"); $smarty = new Smarty; $smarty->assign("Title","My Homepage"); $smarty->assign("Names",array("John","Gary","Gregg","James")); $smarty->display("index.tpl"); ?>
-- index.tpl
<html>
Ola, bem vindo à {$Title}!
<br>
Pessoas que já passaram por aqui:
{section name=customer loop=$Names}
{$Names[customer]}<br>
{if $Names[customer] == "Gary"}
Esse tal de {$Names[customer]} é legal!<br>
{elseif $Names[customer] == "James"}
Já o {$Names[customer]} veio aqui na página e nao gostou do Smarty!
{/if}
{/section}
</html>
Se você ficou interessado pelo Smarty, você pode baixá-lo gratuitamente (ele é LGPL) em:
http://smarty.php.net
Baixe a última versão, atualmente o Smarty está na versão 2.0.1
Ficou interessado no motivo do smarty ter um subdomínio dentro do php.net? Ocorre que a comunidade PHP gostou muito do Smarty e apoiaram o projeto.
Outra hora eu adiciono outro artigo sobre o Smarty! Façam bom uso da ferramenta!
Devo dizer que fiquei assombrado com o Smarty. Ele é o que precisávamos desde os navegadores 4.0: Separar o design do conteúdo. Além disso abre caminho para nós, Designers-programadores, para criar websites mais eficientes e compatíveis, além de reduzir o tempo de execução consideravelmente.
De um lado, o programador tem a modularização e a vantagem de se ocupar com coisas mais importantes do que o retrabalho do sistema. Do outro o designer pode se preocupar com o layout compatível com os navegadores, deixando o espaço para as marcações do template fazer o trabalho de preencher o conteúdo.
É uma maravilha. O baterista toca e o passista samba. É por isso que as grandes escolas vencem: trabalho de equipe.
De um lado, o programador tem a modularização e a vantagem de se ocupar com coisas mais importantes do que o retrabalho do sistema. Do outro o designer pode se preocupar com o layout compatível com os navegadores, deixando o espaço para as marcações do template fazer o trabalho de preencher o conteúdo.
É uma maravilha. O baterista toca e o passista samba. É por isso que as grandes escolas vencem: trabalho de equipe.
22/03/2004 12:23pm
(~20 anos atrás)
23/04/2003 8:30am
(~21 anos atrás)
Este uso de meta programacao lembra-me muito o codecharge ( http://www.codecharge.com ) - que usa isto para criar sites dinamicos em diversas linguagens, usando os mesmos templates.
04/04/2002 4:34pm
(~22 anos atrás)
Não poderia concordar mais com o que o Roberto explicou acima. Bem, talvez concordasse mais se ele colocasse acentos e a cedilha ;)
Mas falando sério, os pontos que ele citou são totalmente corretos e eu uso Smarty no próprio PHPBrasil.com exatamente por esses motivos. Não tenho nenhum designer trabalhando comigo, mas o meu código com certeza fica mais claro.
--Joao
Mas falando sério, os pontos que ele citou são totalmente corretos e eu uso Smarty no próprio PHPBrasil.com exatamente por esses motivos. Não tenho nenhum designer trabalhando comigo, mas o meu código com certeza fica mais claro.
--Joao
03/04/2002 9:32pm
(~22 anos atrás)
Eduardo e Kerwin: a vantagem de usar os templates, e vai ser o que irei postar no próximo artigo sobre o Smarty, é que ele separa a programação do html.
Assim sendo, inves de voce ficar criando codigo em PHP que cria uma tabela, com a estatistica de seu site, por exemplo, voce cria um arquivo PHP e um template.
- No arquivo PHP voce poe as rotinas que consultam o banco de dados, e processa-o, e, na hora de exibir o resultado, voce usa o $smarty->assign e poe os resultados num array e, logo em seguida, voce processa o template.
- No arquivo de template, voce poe o html normalmente, e usa o {section} do Smarty para transformar o array numa tabela.
Assim, voce separa o HTML do PHP.
Quais as vantagem de separar em PHP e Template?
1)É mais facil para o designer por o codigo em Smarty que o programador passou, onde o designers quiser. Ou seja, é mais facil ao designer criar o template e editar as tags do Smarty do que editar um arquivo em PHP.
2)Para o programador o codigo em PHP ira ficar mais limpo, sem HTML.
Ha programadores que program confusamente e programadores de uma forma clara. Qual deles voce é?
Kerwin, como voce vai esquecer o que é programar, se o Smarty é uma ferramenta de meta-programacao? Alem disso, o Smarty nao substitui o PHP, apenas cria uma forma de nao apenas separar, mas tambem de organizar a interacao entre PHP de HTML.
Assim sendo, inves de voce ficar criando codigo em PHP que cria uma tabela, com a estatistica de seu site, por exemplo, voce cria um arquivo PHP e um template.
- No arquivo PHP voce poe as rotinas que consultam o banco de dados, e processa-o, e, na hora de exibir o resultado, voce usa o $smarty->assign e poe os resultados num array e, logo em seguida, voce processa o template.
- No arquivo de template, voce poe o html normalmente, e usa o {section} do Smarty para transformar o array numa tabela.
Assim, voce separa o HTML do PHP.
Quais as vantagem de separar em PHP e Template?
1)É mais facil para o designer por o codigo em Smarty que o programador passou, onde o designers quiser. Ou seja, é mais facil ao designer criar o template e editar as tags do Smarty do que editar um arquivo em PHP.
2)Para o programador o codigo em PHP ira ficar mais limpo, sem HTML.
Ha programadores que program confusamente e programadores de uma forma clara. Qual deles voce é?
Kerwin, como voce vai esquecer o que é programar, se o Smarty é uma ferramenta de meta-programacao? Alem disso, o Smarty nao substitui o PHP, apenas cria uma forma de nao apenas separar, mas tambem de organizar a interacao entre PHP de HTML.
03/04/2002 9:08pm
(~22 anos atrás)
É uma mão na roda!!
Parabéns pelo artigo, nem que seja atrasado!