Newsgroup: it.comp.www.php
Titolo: twig

Cercavo di capire a cosa servono questi template engine .
 
Mi spiegate a cosa servono e quanto sono utili?
Sul web si legge di tutto, ma ancora non capisco la vera utilit�, visto che 
php di suo � gi�  un linguaggio che fa "quasi" le stesse cose.
grazie 
 

 grazie
È il "quasi" che cambia le cose
 
Servono a non mettere php nei template, a essere più flessibili e ordinati
Ad avere prestazioni più elevate in alcuni casi (specie se supportano i 
tag ESI)
 
Twig si sta affermando bene, complice l'integrazione con Symfony
 
 
-- 
I fatti mi cosano

Twig si sta affermando bene, complice l'integrazione con Symfony
 
grazie della risposta.
Cosa ne pensate di quanto scritto su questa pagina?
http://tinyurl.com/q6axery
 
la stavo appunto leggendo adesso e dice che sono più lenti.
E' pur vero che i template vengono compilati e memorizzati, ma cmq mi rimane 
qualche dubbio su quanto possano essere altrettanto veloci come semplice 
codice php .
 

Il 09/01/2014 09:28, paolo34 ha scritto:

sulla rete ci sono discussioni storiche su questo argomento. Poi ognuno 
si fa la sua idea.
La mia � che togliendo il caching massiccio di smarty (che pu� avere 
eccome una utilit� x diversi utilizzi), per il resto � una complicazione 
inutile: devi imparare un nuovo sottolinguaggio x quanto semplice, 
abbassi le prestazioni (spesso gi� non spettacolari, e il caso di twig 
che si colloca naturalmente in symfony cade a fagiolo) e perlomeno a mio 
avviso non c'� alcun vantaggio sintattico o estetico (come ci pu� essere 
con le taglib di altri linguaggi).
Poi come detto la mia � solo un'opinione, non pretendo ne di essere nel 
giusto ne di imporla ad altri :)
 
-- 
Z.


Digli a ginho che il sito non valida come html, quindi o toglie il badge 
o sistema o se ne sbatte
 
Quello che scrive è in parte vero finché ti fai il blog fato in casa
Prova a fare un progetto un minimo serio e mantenibile e ne riparliamo
 
Non è tanto o solo questione di performance che cmq si ottiene cachando 
e precompilando, è questione di mantenere il codice e di renderlo ben 
isolato
 
Puoi avere un team che fa commit di modifiche sui controller, uno che fa 
commit di modifiche sui template e alla fine fai un merge pulito pulito 
(giusto il primo scenario che mi viene in mente)
 
Sebbene symfony supporti i template php io uso solo twig
C'è da dire che una delle soluzioni più diffuse, ossia wordpress, usa 
template php, assieme a pezzi di logica buttati nei "template"
È una delle soluzioni più vomitevoli mai viste da occhi umani a livello 
di codice, ma funziona, è diffuso e il cliente alla fine per certe cose 
ne rimane soddisfatto. Ci si tappa il naso e lo si usa. Una delle cose 
che lo fa puzzare è la mancanza di un motore di templating


 con le taglib di altri linguaggi).
 
 
Riportando quello che leggo sembra che twig aumenti anche la sicurezza del 
codice (cosa non da poco) tramite una sandbox, e questo � sicuramente un 
grande punto a suo favore.
Per quanto riguarda invece la leggibilit� ho qualche dubbio.
Qu� 
http://tinyurl.com/mnc2k4y
 vedo un esempio (ma ne ho visti anche altri), 
e da programmatore che non conosce twig, mi troverei in grossa difficolt� a 
capire anche solo il linguaggio usato. Si risparmia poco codice e non � 
neppure molto pi� semplice (anche se poi si possono usare diversi tag).
In php puoi cmq usare riferimenti a funzioni che simulano i tag  e anche ad 
un programmatore inesperto baster� trovare il codice della funzione per 
capire il tutto.
Questo twig ancora non l'ho capito bene :) 
 

 twig ancora non l'ho capito bene :)
 
Perché lo stai prendendo dalla parte sbagliata
Se devi fare cose della complessità di quegli esempi lascia stare i 
motori di template
 
Twig viene comodo per altri livelli di complessità. Finché non arrivi ad 
averne bisogno rimane un inutile layer aggiuntivo
Solo se già te lo sei smazzato per altri progetti poi sei incentivato ad 
usarlo anche per cose piccole



P.S.
una cosa che rende twig comodissimo è l'integrazione con symfony:
Renderizzo un template
{{ render(controller('AcmeArticleBundle:Article:recentArticles', { 
'max': 3
     })) }}
O includo i javascript
{% block javascript_della_pagina %}
{% javascripts
     '@MySiteBundle/Resources/public/js/jquery-1.7.1.min.js'
     '@MySiteBundle/Resources/public/js/jquery.countdown.min.js'
     '@MySiteBundle/Resources/public/js/*'
%}
{# notare che i path vengono renderizzati a runtime lasciando liberi di 
spostare i file dove ci pare #}
{% endblock %}
 
O estendo un template e aggiungo (ad es) javascript
{% extends 'some.tpl' %}
{%block javascript_della_pagina %}
 
{{parent()}} {#ma potrei anche non averlo chiamato, in modo da fare un 
override invece di aggiungere#}
<script ....
alert('a');
{%endblock%}
 
In un progetto complesso sono cose che fanno molto comodo


Si, in genere sono più lenti, ma si parla di millisecondi e non è certo questo che rallenta l'applicativo.. specialmente se poi hai un sistema di caching decente che salva l'html finale.
 
Io trovo che sono "inutili" per piccoli progetti, ma diventano fondamentali per progetti medio/grandi e/o quando devi lavorare a stretto contatto con designers che non conoscono nulla di php.
 
Inoltre, spesso offrono anche un isolamento di sicurezza, cosa che rende possibile far lavorare gente "esterna" ai propri progetti in sicurezza.
 
 
Con template in php puro, può bastare anche uno spazio di troppo per avere una pagina completamente bianca.
 
 
Insomma, secondo me il gioco vale la candela, è vero che devi imparare un "secondo" linguaggio, ma solitamente sono molto molto semplici e in mezza giornata impari quello che ti serve.

È un pò il discorso dei CSS e LESS/SASS, insomma; Puoi vivere tranquillamente senza ma una volta che li usi non li abbandoni più.

 possibile far lavorare gente "esterna" ai propri progetti in sicurezza.
 
Questa sicuramente � la cosa che reputo interessante, ma per il resto mi 
sembra pi� un ostacolo che altro.
Tanti programmatori non conoscono twig e per capire il codice dovrebbero 
imparare un altro linguaggio.