Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tacno

Smarty ou Twig, qual utilizar?

Recommended Posts

Olá.

Estou querendo utilizar um framework de template e na internet ví o Smarty e o Twig.

 

Já utilizei o smarty e achei ele muito bom. Porém, me parece que não está tendo mais atualizações e o site parece desatualizado.

 

Gostaria de saber em relação ao Twig. Quem já utilizou os dois? Qual seria a melhor opção?

 

Estava pesquisando em relação a performance e em alguns sites os gráficos apontavam o smarty como melhor e outros o twig como melhor.

 

Gostaria da opinião de vocês. Qual a melhor escolha??

 

Desde já agradeço.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prefiro o Twig.

 

O Twig tem mais funções, é (muito) mais elegante, é mais bem feito, tem uma comunidade maior (mais features novas e menos bugs), roda na HHVM, etc. Ambos têm uma performance bem semelhante, não fará muita diferença.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de decidir se você vai usar Smarty, Twing ou qualquer outro sistema de templates, você precisa considerar se você REALMENTE precisa de uma ferramenta de templates.

 

Uma classe simples que te permita armazenar dados num array e resgatá-los depois, incluir um arquivo qualquer onde vai haver nada mais que HTML e vários "abre e fecha" de <?php ?> e, então, enviar o conteúdo para o navegador, já é na maioria das vezes suficiente para você separar o PHP do HTML.

 

Agora se você quer uma ferramenta de template pra produzir um HTML mais "bonitinho", ter pré-fabricado plugins ou cvom funções que o próprio PHP faz, você está apenas acrescentando mais uma camada ao fluxo da Requisição, o que potencialmente aumenta a demora no processo, você está matando formiga com bala de canhão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, até que se prove o contrário todos os frameworks fazem isso pra diminuir a carga necessária. Mas ainda assim, se não é necessário, não se deve usar.

 

Só que sempre vai haver aquele usuário infeliz e sem sorte que tropeçou no chinelo quando chegou do serviço debaixo de chuva que vai acessar uma determinada página que não esteja compilada ou não cacheada.

 

Tá, tá, isso é extremismo demais, um em milhão, quem sabe. Mas é só um cenário demonstrativo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quem diz que deve utilizar um sistema de template não sou eu.

Olha

 

https://developers.google.com/speed/articles/optimizing-php

 

Use caching

Making use of a caching module, such as Memcache, or a templating system which supports caching, such as Smarty, can help to improve the performance of your website by caching database results and rendered pages.

Recomenda-se a utilização, ou então o Memcache nativo do Google. Porém acredito que valha a pena sim, justamente pelo fato de se ter varios métodos prontos, ter intellisense para o zend studio e eclipse além de separar melhor a camada de visualização.
Em relação ao desempenho, o cache está aí pra isso =D
Quero também para utilizar o minify no HTML, pois o google recomenda também e tanto o twig, quanto o smarty possuem essa função.
Quero pra fazer justamente o contrário, aumentar o desempenho. O servidor monta isso rápido, sai mais rápido, pois o servidor monta a página em menos de 1 segundo, já o cliente demora mais que isso pra resgatar os dados.
Meu site está abrindo em 0.877 segundos. Quero otimizar mais um pouco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda acho desnecessário um framework de template pra isso.

 

Veja bem... Com um pouquinho de trabalho você pode criar um pequeno script que leia um determinado URL, obtenha o código-fonte, minimize-o (melhor tradução que encontre para "minify") e salve o HTML estático para ser servido.

 

E, então, com algumas poucas linhas de um console você disparar um cURL para a URL principal que vá navegando links adentro cacheando tudo de uma vez. Acho que foi o Evandro que postou tal snippet uns dias atrás, num tópico de crawler.

 

E mais! Se esse script estiver integrado à um backend de administração, cada vez que você editar um determinado conteúdo, a própria aplicação determina a necessidade de regenerar o cache daquela página e te oferece um botãozinho pra disparar a tarefa.

 

Assim você sequer precisa de um CronJob rodando periodicamente.

 

Aliás, muito me admira o Google ter postado ou permitido a postagem de um artigo desses que descreve a mais mal vista das práticas de Orientação a Objetos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

"minimize-o (melhor tradução que encontre para "minify")"

 

Pensei a mesma coisa quando fui escrever! haha

Bem vou utilizar o Twig. Caso o desempenho piore volto aqui e comento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Piorar, piorar, não vai. Que vai ter um performance menor que uma aplicação sem, isso é fato, mas a diferença é tão pequena que não justifica não usá-lo.

 

O que vai determinar MESMO a performance é o seu PHP. Se você otimizar suas consultas, cachear o que for possível, diminuir a quantidade de includes e etc. já terá percorrido metade do percurso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o velhinho Knuth diz, a otimização prematura é a raiz de todo o mal. O melhor é não querer otimizar a performance como se não houvesse amanhã e depois fazer um profiling (xDebug, Zend Debugger) para buscar gargalos.

 

Aliás, muito me admira o Google ter postado ou permitido a postagem de um artigo desses que descreve a mais mal vista das práticas de Orientação a Objetos.

 

Há uma lei não escrita: TODO artigo que vá falar de performance, benchmark e micro-otimizações (principalmente em PHP) será uma grande porcaria e ensinará um milhão de más práticas para ganhar um nano-segundo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usei Smarty durante muito tempo e depois troquei por Twig e não vi grande diferença de performance entre os dois (mas não cheguei a fazer nenhum benchmark).

 

Durante muito tempo, enquanto usava hosts compartilhados, eu usei o Smartoptimizer pra melhorar a performance dos meus sites sem que eu tivesse que alterar muito os códigos deles. Depois que passei a ter controle sobre o meu servidor, o mod_pagespeed fez uma diferença gigantesca. Cheguei a fazer alguns testes simples usando siege mas, como eram pra uso pessoal, não os documentei. Se tiver oportunidade de utilizá-lo, eu REAMENTE recomendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Framework de template em minha opinião serve apenas quando for necessário vetar, por segurança, o acesso dos designers direto ao php.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra vantagem, que não sei se já citaram, é compartilhar um template do PHP ao Javascript. Se sua aplicação/site coloca muita lógica de apresentação no javascript isso pode ser interessante. No github existe uma implementação do Twig em Javascript: https://github.com/justjohn/twig.js

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.