+1

Smarty - the compiling PHP template engine

criado por Roberto Bertó em 03/04/2002 3:20am
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
<?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

&lt;html>
Ola, bem vindo à {$Title}!
&lt;br>
Pessoas que já passaram por aqui:
{section name=customer loop=$Names}
{$Names[customer]}&lt;br>
{if $Names[customer] == "Gary"}
Esse tal de {$Names[customer]} é legal!&lt;br>
{elseif $Names[customer] == "James"}
Já o {$Names[customer]} veio aqui na página e nao gostou do Smarty!
{/if}
{/section}
&lt;/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!

Comentários:

Mostrando 1 - 6 de 6 comentários
Edinho disse:
Realmente eu não sei como consegui fazer sites em php sem conhecer o smarty!
É uma mão na roda!!

Parabéns pelo artigo, nem que seja atrasado!
29/09/2004 10:01am (~20 anos atrás)

Leonardo disse:
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.
22/03/2004 12:23pm (~21 anos atrás)

Renato Albano disse:
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 (~23 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
03/04/2002 9:32pm (~23 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.
03/04/2002 9:08pm (~23 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)