php template web engine... come funzionano?

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
smtux
Linux 3.x
Linux 3.x
Messaggi: 977
Iscritto il: gio 1 set 2005, 0:00
Slackware: 12.0
Località: somewhere in the time

php template web engine... come funzionano?

Messaggio da smtux »

salve a tutti...

ho letto su html.it dei template web engine tipo
smarty
smart template
quickskin

ma non capisco come funzionano...

infatti volevo fare un sito partendo utilizzando php e usando gli strumenti in oggetto al post...

Sinceramente non capisco se devo installare qcs se esistono dei template da utilizzare stile joomla...

scusate per la confusione... quando le cose non sono chiare nella testa anche fare una domanda è dura ;)!

grazie in anticipo

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: php template web engine... come funzionano?

Messaggio da conraid »

smtux ha scritto: ho letto su html.it dei template web engine tipo
smarty
smart template
quickskin


Sinceramente non capisco se devo installare qcs se esistono dei template da utilizzare stile joomla...
Joomla è un CMS, puoi usarlo senza conoscere PHP

Quelli in oggetto sono dei template engine, in pratica in una pagina html scrivi qualcosa come {nome_variabile} e lui la sostituisce con il codice giusto. Servono per crearti dei template in cui vi andrà del codice. Io preferisco non usarli, li trovo limitanti. Ma ognuno ha i suoi gusti, i suoi modi di fare, etc...

Comunque per iniziare ti consiglio di non usarli. Prima impare il linguaggio normalmente

Avatar utente
alessiodf
Linux 3.x
Linux 3.x
Messaggi: 823
Iscritto il: ven 14 ott 2005, 21:04
Slackware: current
Kernel: 2.6.26.4
Desktop: Kde 4.1
Località: Roma
Contatta:

Messaggio da alessiodf »

il concetto di template engine nasce per separare la logica applicativa php dalla presentazione (il codice html).

i template engine funzionano a mo' di parser. ossia prendono il tuo file template che non e' altro che codice html + un qualche altro codice in stile [$pippo] oppure [if $pippo == "pluto"]... eccc, e lo processano costruendo la risposta html pulita.

il vantaggio e' che il tuo codice php sara' pulito, e non conterra' cose del tipo:

Codice: Seleziona tutto


<?php
if(1 == 1)
{
   echo "<h1>1 e' uguale a 1!</h1>";
}
else
{
   echo "<h1>1 e' diverso da 1 O,o</h1>";
}

?>
o peggio codice html separato e inserito tra

Codice: Seleziona tutto

<?
php code
?>
html text
<?
php code
?>
ora, ogni engine funziona a modo suo, io ti consiglio smarty per la sua potenza, e per la sua documentazione possente come quella che trovi su php.net :)

per esempi, cerca direttamente su smarty.php.net!

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio da targzeta »

Pongo una domanda:
Sto seguendo il sito di un associazione, e per ora è completamente dinamico sul lato server, quindi con php. Quello che penso, ogni volta che scrivo del codice è:"Chissà quanto stresso il server con queste pagine".
Con questi template engine si può ridurre il carico di lavoro svolto da server? Visto che tira fuori pagine html?

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
alessiodf
Linux 3.x
Linux 3.x
Messaggi: 823
Iscritto il: ven 14 ott 2005, 21:04
Slackware: current
Kernel: 2.6.26.4
Desktop: Kde 4.1
Località: Roma
Contatta:

Messaggio da alessiodf »

spina ha scritto: Con questi template engine si può ridurre il carico di lavoro svolto da server? Visto che tira fuori pagine html?
O,o ma perche' quando il server web processa le tue pagine in php, che tipo ti risposta ritorna? :p sempre html e'!

i template engine possono semmai ridurre le prestazioni, anche se i una percentuale che si aggira sull'1% :)

rende il codice semplice, pulito e snello! inoltre hai il supporto ai templates! :)

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Messaggio da conraid »

spina ha scritto: Con questi template engine si può ridurre il carico di lavoro svolto da server? Visto che tira fuori pagine html?
IMHO appesantisce un poco il carico, in quanto aggiungi complessità.
Per ridurre il carico generato dall'output dovresti lavorare sul caching delle pagine, non so se i template prevedono qualcosa di simile.

EDIT:
mi hanno preceduto :-)

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio da targzeta »

alessiodf ha scritto:O,o ma perche' quando il server web processa le tue pagine in php, che tipo ti risposta ritorna? :p sempre html e'!
Allora non ho capito bene a che servono. Questi template vengono eseguiti dal web server?
Io pensavo che venissero processati in locale e poi sul web server ci si mette solo il risultato finale.
Non ci stò a capire più niente.

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Messaggio da conraid »

spina ha scritto: Allora non ho capito bene a che servono. Questi template vengono eseguiti dal web server?
Io pensavo che venissero processati in locale e poi sul web server ci si mette solo il risultato finale.
Vengono processati dal motore PHP sul server si.
Servono a separare la logica del programma in PHP dal codice HTML, in modo che per esempio metti in mano la gestione del template a qualcuno che non conosce o conosce pochissimo il PHP.
Aiutano insomma. Anche se come ho detto nel primo messaggio, io preferisco fare tutto senza template. Lo trovo più immediato

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio da targzeta »

conraid ha scritto: Vengono processati dal motore PHP sul server si.
Servono a separare la logica del programma in PHP dal codice HTML, in modo che per esempio metti in mano la gestione del template a qualcuno che non conosce o conosce pochissimo il PHP.
Aiutano insomma. Anche se come ho detto nel primo messaggio, io preferisco fare tutto senza template. Lo trovo più immediato
Mi sto informando sul sito di smarty. Da quello che ho potuto capire non fanno al caso mio.
Vedremo.

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
francogdn
Linux 2.x
Linux 2.x
Messaggi: 320
Iscritto il: ven 19 mag 2006, 10:52
Distribuzione: Fedora
Località: Torino

Messaggio da francogdn »

Comunque, a mio avviso, che piacciano o no i template engine vanno usati.
Ormai il pattern MVC (Model-view-controller) è sempre più utilizzato e richiesto. Un approccio di questo tipo consente allo sviluppatore di fare lo sviluppatore, e al grafico di fare il grafico, oltre che ad avere un codice leggibile e manutenibile.
Molte aziende con cui ho avuto a che fare si rifiutano di assumere chi tende a mischiare codice e presentazione (il cosiddetto spaghetti code).
Anche in Java, per farti un esempio di come si stanno evolvendo gli standard, framework come Struts e Spring stanno prendendo sempre più piede.

Per non andare troppo off-topic, impara ad usare Smarty che è uno strumento potentissimo e quasi "universale" ;)
Sul sito internet c'è un ottimo tutorial che ti spiega come installarlo e come fare i primi passi.

Ciao.

smtux
Linux 3.x
Linux 3.x
Messaggi: 977
Iscritto il: gio 1 set 2005, 0:00
Slackware: 12.0
Località: somewhere in the time

Messaggio da smtux »

grazie delle risposte... sono anche contento di aver aperto un post che interessa a qcn ;)

però non ho per nulla le idee chiare...

infatti non capisco come usare i template engine e soprattutto non capisco se hanno già loro dei template da scegliere oppure se per esempio posso usare template tipo joomla!

Anche io sono dell'idea di usare il design pattern MVC... ma mi trovo difronte a Kompozer in cui posso scrivere il mio buon html ed il mio scarso php ma poi come ci infilo i template engine?

grazie ancora per le risposte...

PS: oltretutto sto cercando la soluzione meno pesante visto che il tutto deve girare su hw limitato... e smarty benchè sia spiegato in italiano dicono che è pesantuccio, no?!

Avatar utente
francogdn
Linux 2.x
Linux 2.x
Messaggi: 320
Iscritto il: ven 19 mag 2006, 10:52
Distribuzione: Fedora
Località: Torino

Messaggio da francogdn »

No, smarty non ha template già fatti e finiti da poter applicare alle tue pagine web un po' come succede con Joomla (mi è sembrato fosse questa la tua domanda).
Ma dal momento che la presentazione è distinta dalla logica, puoi farti te un template ad hoc o fartelo fare da qualcuno, per poi applicarlo senza eccessive difficoltà.

Per quanto riguarda la pesantezza, non sono d'accordo. E poi c'è anche un sistema di caching molto evoluto ;)

Se vuoi iniziare a lavorare con Smarty:

Installazione: http://smarty.php.net/quick_start.php
Crash Course: http://smarty.php.net/crashcourse.php

Magari all'inizio ti troverai un po' disorientato, ma fidati alla lunga ne vale la pena. Io non ne posso più fare a meno :)

Avatar utente
puzuma
Linux 2.x
Linux 2.x
Messaggi: 482
Iscritto il: mar 4 lug 2006, 17:14
Nome Cognome: Stefano Salvador
Slackware: current
Kernel: 2.6.32.2
Desktop: KDE 4.4.0
Località: Udine
Contatta:

Messaggio da puzuma »

io ti sconsiglio di usare qualsiasi sistema di template engine, in quanto php è già di suo un template engine, è inutile che impazzisci ad installare e ad impararti una nuova sintassi quando l'unico vantaggio che hai è che invece di scrivere <? echo $pippo ?> scrivi [pippo] o che altra diavoleria si sono inventati nel motore di template.

in ogni caso il motore di template prende il tuo bel template, lo parsa e sputa fuori php, se qualcosa non va in questa catena passi le notti a fare debug.

usare un pattern MVC non ha niente a che fare con usare un motore di template, infatti il framework della zend (gli sviluppatori di php) è perfattamente MVC ma non usa nessun motore di template. Puoi scrivere codice a spaghetti anche con smarty (ho lavorato 2 anni dove lo usano e so di cosa parlo).

per cominciare semplicemente segui la regola di farti uno script in cui fai tutti i tuoi conti (chiamiamolo controller) alla fine fai l'include di un'altro script php in cui l'html dovrà essere il 95%, per progetti semplici sei già quasi MVC.

Se il sito non è complesso e i contatti non superano il centinaio al giorno non ti preoccupare delle prestazioni, puoi far girare il sito anche su un 486.[/b]

Avatar utente
francogdn
Linux 2.x
Linux 2.x
Messaggi: 320
Iscritto il: ven 19 mag 2006, 10:52
Distribuzione: Fedora
Località: Torino

Messaggio da francogdn »

puzuma ha scritto:io ti sconsiglio di usare qualsiasi sistema di template engine, in quanto php è già di suo un template engine, è inutile che impazzisci ad installare e ad impararti una nuova sintassi quando l'unico vantaggio che hai è che invece di scrivere <? echo $pippo ?> scrivi [pippo] o che altra diavoleria si sono inventati nel motore di template.
....
Certo che se vuoi continuare ad utilizzare php a livello amatoriale nessuno ti obbliga a passare ad un sistema che è già di fatto uno standard riconosciuto.
Se molte aziende che contano fanno certe scelte tu non puoi decidere di ignorarle tout court, solo perché è più comodo scrivere "echo $pippo".
Poi liberissimi di continuare a lavorare come avete sempre fatto, io è dal 2002 che utilizzo Smarty, non ho mai passato le notti a fare debug e non mi sono dovuto studiare una nuova sintassi. E soprattutto non ho avuto alcun problema a passare ad altri sistemi MVC che il mercato richiede fortemente.

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Messaggio da nuitari »

Stiamo scherzando? E' pazzesco pensare di non usre i template engine, per N motivi. IMHO i principali sono 2.

Il primo è che in un ambiente lavorativo normale il programmatore php non è anche il responsabile della creazione dell'html, per quello c'è un designer specializzato, che ne capisce bene di uno e non dell'altro. Mischiando i due tipi di codice diventa veramente complicato manterli entrambi, ma MOLTO complicato, quasi una sfida acrobatica. Inoltre, si corre il serio risco di compromettere un tipo di codice modificando l'altro. Pensa ad esempio cosa potrebbe succedere se il designer, usando dreamweaver o simili, eliminasse un intera porzione di codice html perchè non più necessario, eliminando al contempo tutto l'eventuale codice php ivi contenuto... impensabile.
Con un template il codice HTML sta nel file .html, il codice PHP nel file .php e questo rischio non esiste.

Il secondo è che non usando template engine, il codice diventa dipendente dal layout.
Ad esempio, supponi di dover visualizzare una tabella con una serie di totali ed un page navigator per la suddivisione dei contenuti in pagine (il che in genere è auspicabile).
A seconda di dove lo vuoi visualizzare, se in alto, in basso etc devi fisicamente spostare il tuo codice od addirittura esser costretto a scrivere le cose più volte, o sei semplicemente costretto a super parametrizzare il tutto o a salvarti milioni di variabili temporanee.. O peggio, se il layout cambia (una cosa che era in alto finisce in basso o viceversa), puoi esser costretto a dover riscrivere pezzi di codice, non solo spostarli... terribile, semplicemente.
Con un template ti risolvi il problema, in quanto la visualizzazione è gestita in un file separato ed indipendente e l'effettiva collocazione degli elementi (o la loro ripetizione) non riguardano minimamente il flusso del codice, il quale rimane invariato.

Per farti capire come si usa un template, facciamo un esempio, usando un engine di template e nomi di file ipotetici.
Supponiamo di voler visualizzare la data corrente in una pagina html. Senza usare i template, dovresti creare un file che potremmo chiamare "pagina.php" e metterci dentro il seguente codice:

Codice: Seleziona tutto

La data corrente è: <?php date("d/m/Y"); ?>
Con i template, dovresti innanzitutto creare un file (il template) che potremmo chiamare "pagina.html" in questo modo:

Codice: Seleziona tutto

La data corrente è: {data_corrente}
Quindi un file php (che poi è quello che chiamerai per visualizzare la pagina) che potremmo chiamare "pagina.php" con il seguente codice:

Codice: Seleziona tutto

<?php
include("template_engine.php");
$tpl = new template("pagina.html");
$tpl->set_var("data_corrente", date("d/m/Y");
$tpl->parse();
?>
Nel file, come puoi vedere, innanzitutto includi l'engine di template. Quindi istanzi un oggetto di tipo template facendogli caricare il file .html, valorizzi al suo interno la variabile {data_corrente} e ne visualizzi l'output.

Il tutto è ovviamente più lungo da scrivere ma decisamente più pulito ed organizzato, e nulla di quello che può accadere all'HTML comprometterà mai il codice PHP.

L'unico vero difetto dei template, comunque, è l'utilizzo della memoria. Ogni template ne consuma un certo quantitativo, ed avendo php (come è ragionevole che sia) un limite fisico alla dimensione di memoria che ogni interrogazione può occupare, ne consegue che c'è un limite fisico alla dimensione massima delle pagine che puoi creare con i template (dipendente dalle impostazioni di PHP sul sever).

Rispondi