Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bueno gurizada, vou tentar ser breve. Como vários programadores, quando eu tava começando a usar PHP conheci um lancezinho chamado FastTemplate e fiquei facinado (na verdade acho que minha primeira classe com um ar mais profissional foi um sistema de template a la FastTemplate).
Pra quem não conhece, FastTemplate é uma técnica usada para template onde podemos fazer coisas mais ou menos assim; temos um arquivo com código HTML e as tags que o sistema vai reconhecer (digamos index.tpl)
<html><body>Olá {$USUARIO}</body></html> Depois temos o PHP que vai substituir as tags {$VAR} por algum valor (digamos **index.php**)
**PHP** [/tr][tr]$Template = new FastTemplate;$Template->assign ('USUARIO', 'dokkalfr');
print $Template->parse ('index.tpl');
[/tr]
Minha primeira impressão ao ver isso foi: "Nossa, eu posso separar a lógica do design!!". É verdade, mas não consigo nada que eu já não tivesse com puro PHP. FastTemplate é reinventar a roda, e isso é um saco!! Qual a diferença do código acima para esse:
index.tpl.php
**PHP** [/tr][tr]<html><body>
Olá <?=$usuario?>
</body>
</html>
[/tr]
index.php
PHP [/tr][tr]$usuario = 'dokkalfr';include ('index.tpl.php');
[/tr]
O Smarty é só um FastTemplate com muitos recursos, mas ainda não vejo nenhuma razão pra usá-lo ao invés da sintaxe nativa do PHP para template. Com o passar do tempo todo usuário de um sistema mais rudimentar de FastTemplate vai se sentir com pouco controle sobre o template, então o Smarty traz tags que ajudam a retomar este controle como a tag {if} e traz alguns operadores como 'eq'. Bom, mas se bem me lembro a idéia que me atraiu pra cá foi separar lógica de design, loops e operadores de comparação tem um cheiro muito parecido com lógica, e além de não trazerem a separação anunciada, não traz nenhuma vantagem sobre PHP puro.
COM SMARTY
Caso haja o nome do usuário na session ele imprime o nome, senão imprime "Visitante anônimo"
index.tpl
{ Smarty }<html><body>{$usuario|default:"Visitante anônimo"}</body></html>
index.php
**PHP** [/tr][tr]include('Smarty.class.php');$s = new Smarty;
$s->assign ('usuario',$_SESSION['username']);
[/tr]
SEM SMARTY
index.php
**PHP** [/tr][tr]<?function default ($valor, $default) {
return isset($valor) ? $valor : $default;
}
$usuario = default ($_SESSION['username'], 'Visitante anônimo');
// caso não gostem de ter o HTML na mesma página, podia ser feito
// include ('index.tpl.php');
?>
<html>
<body>
Olá <?=$usuario?>
</body>
</html>
[/tr]Na minha opinião seria muito mais interessante uma bibliotecas de funções de "formatação de saída" do que esse circo que o Smarty faz!!
Outra coisa seria utilizar XML e XSLT ou um sistema de template com "code behind" como do ASP.Net e JSP (via JavaServerFaces) que é simulado pela WACT (uma framework MVC escrita em PHP4) ou ainda algumas outras que utilizam parametros XML com diferentes namespaces como o patTemplate. Mas vejo pouco esforço da comunidade PHP em abrir mão dos inúteis FastTemplates em prol de uma ferramenta realmente eficiente. De minha parte, venho tentando criar uma ferramenta interessante de template mas com o pouco tempo que tenho disponível está bem devagar.
Alguém conhece algum projeto interessante que fuja do FastTemplate ou tem algum motivo especial para adotar ferramentas como o Smarty ou similares?!
Carregando comentários...