Smarty

Software screenshot:
Smarty
Dettagli del software:
Versione: 3.1.5
Data di caricamento: 11 May 15
Licenza: Libero
Popolarità: 1

Rating: nan/5 (Total Votes: 0)

Smarty non è in realtà un "modello di motore", sarebbe più accuratamente descritto come un "modello / Presentation Framework." Cioè, fornisce al progettista programmatore e modello con una ricchezza di strumenti per automatizzare le attività comunemente affrontati a livello di presentazione di una domanda. Sottolineo la parola Framework perché Smarty non è un semplice template engine-tag sostituzione. Anche se può essere utilizzato per uno scopo così semplice, la sua attenzione è rivolta allo sviluppo e la distribuzione della vostra applicazione rapida e indolore, pur mantenendo alte prestazioni, la scalabilità, la sicurezza e la crescita futura.
Quindi è Smarty giusto per te? Che si tratta di è utilizzare lo strumento giusto per il lavoro. Se volete semplice sostituzione variabile, si potrebbe desiderare di guardare qualcosa di più semplice o anche rotolare il proprio. Se si desidera un quadro template robusto numerosi strumenti di assistervi come applicazione si evolve verso il futuro, Smarty è probabilmente una buona scelta.
Perché usarlo?
Uno degli obiettivi di progettazione Smartys primario è quello di facilitare la separazione del codice applicativo dalla presentazione. In genere, il codice dell'applicazione contiene la logica di business dell'applicazione, scritto e mantenuto in codice PHP. Questo codice è mantenuto da programmatori. La presentazione è il modo in cui il contenuto è presentato per l'utente finale, che è scritto e mantenuto in file di modello. I modelli sono mantenuti dai progettisti del modello.
Nella sua funzione di base, il codice dell'applicazione raccoglie contenuti, assegna al template engine e la visualizza. Il contenuto potrebbe essere qualcosa come il titolo, il sommario, l'autore e il corpo di un articolo di giornale. Il codice dell'applicazione non si preoccupa di come questi contenuti sarà presentato nel modello. Il grafico è responsabile della presentazione. Essi modificare i file di modello, l'aggiunta di markup e portando a compimento. Si tratta in genere le cose come i tag HTML, fogli di stile CSS e altri strumenti forniti dal motore di template.
Questo paradigma serve a diversi scopi:
) I progettisti non può rompere il codice di applicazione. Possono pasticciare con i modelli di tutto quello che vogliono, ma il codice rimane intatto. Il codice sarà più stretto, più sicuro e più facile da mantenere.
) Errori nei modelli si limitano ai Smartys routine di gestione degli errori, che li rende più semplice e intuitivo possibile per il progettista.
) Con la presentazione su un proprio livello, i progettisti possono modificare o ridisegnare completamente da zero, il tutto senza alcun intervento da parte del programmatore.
) I programmatori non sono confondere i modelli. Possono andare di mantenere il codice dell'applicazione, modificando il contenuto modo si acquisisce, fare nuove regole di business, ecc senza disturbare il livello di presentazione.
) I modelli sono una rappresentazione stretta di ciò che il risultato finale sarà, che è un approccio intuitivo. I progettisti non importa come il contenuto arrivato al modello. Se si dispone di dati estranei nel modello, come un'istruzione SQL, questo si apre il rischio di rompere il codice applicativo dalla cancellazione accidentale o la modifica da parte del progettista.
) Non sta aprendo il server per l'esecuzione di codice PHP arbitrario. Smarty ha molte caratteristiche di sicurezza integrate in progettisti in modo da non violare la sicurezza, sia intenzionale o accidentale. Essi possono solo fare quello che si limitano a nei modelli.
Sebbene codice applicativo è separato dalla presentazione, questo non significa necessariamente che la logica è separato. Il codice dell'applicazione ha ovviamente logica, ma i modelli possono avere logica in base alla condizione che sia solo la presentazione. Ad esempio, se il progettista vuole alternare i colori delle righe di tabella o maiuscole alcuni contenuti assegnato, possono. Questa è la logica di presentazione, qualcosa che il programmatore non dovrebbe occuparsi. Quante volte avete avuto qualche presentazione visualizzate in una singola colonna e poi si voleva in due o tre colonne, in modo che il codice dell'applicazione deve regolare per ospitare questo? Un approccio migliore è quello di assegnare il contenuto in un unico array e lasciare che il modello di gestire la presentazione. Questo semplificherà l'applicazione e mantenere i modelli flessibili. Smarty fornisce gli strumenti per gestire questo tipo di situazione.
Questo non significa che Smarty impedisce di mettere logica dell'applicazione nel modello, bisogna avere un po 'di auto-disciplina. Ecco un esempio di incorporare la logica di business nel template (che è di destra, evitare di fare questo, se possibile):
{If $ smarty.session.user e ($ user_type eq "Editor", o $ user_type eq "admin")}
modifica
{/ If}
I controlli logici se l'utente è loggato e sono sia un editore o un amministratore, allora essi sono autorizzati a modificare questo modo la casella di modifica si presenta. Cioè logica che appartiene nel codice dell'applicazione. Il modello non si preoccupa di ciò che le credenziali di questo utente ha, ha solo bisogno di sapere se la casella di modifica viene visualizzata o no! Quindi diamo un'occhiata a un approccio più adatto:
{If $ edit_flag}
modifica
{/ If}
Spetta al programmatore di applicazioni per assegnare il $ edit_flag, un semplice e facile da capire variabili nel modello. In questo modo il modello non è più si basa sulla struttura dati sottostante. Se mai il formato della struttura di dati della sessione cambia, nulla deve essere regolata nel modello.
Vediamo ora un paio di cose che si possono fare con Smarty. Una cosa che può fare è di funzioni personalizzate. Questi sono i tag nel modello che eseguono un certo compito. Esempio:
{File html_image = "masthead.gif"}
Qui abbiamo una funzione chiamata "html_image". Questa funzione prende l'immagine data in l'attributo "file" e fa tutto il lavoro necessario a venire con il seguente codice HTML:

La funzione di immagine ha il compito di capire l'altezza e la larghezza e la fornitura di bandiera bordo predefinito. Naturalmente si potrebbe utilizzare il tag HTML statico nel modello invece, ma questo dimostra come una funzione personalizzata può essere utilizzata per semplificare un compito molto comune. Il progettista può concentrarsi sulla progettazione e meno sul materiale tecnico. Inoltre, se il progettista decide di ritirare un'immagine diversa formato masthead in, il modello non ha bisogno di regolazione.
html_image è una funzione che viene fornito con Smarty. È inoltre possibile effettuare le proprie funzioni personalizzate. Ecco un altro esempio di quello che si potrebbe essere simile:
{Tipo html_link = "articolo" id = "abc123" text = "Fire tira fuori Hotel"}
Questo sta usando una funzione personalizzata chiamata "html_link". Viene fornito con il seguente codice HTML:
Incendio porta fuori hotel
Cosa realizzare? Per uno, il progettista non necessita di essere interessato con il formato di un URL per un articolo. Con URL hard-coded, che cosa succede se un giorno il programmatore decide di pulire le cose, e cambia la sintassi URL dal /display_article.php?id=abc123 a / ART / abc123? Dovremmo modificare ogni modello con un URL articolo. Questo è solo un altro esempio di come una funzione template può rendere i modelli più facile da mantenere.
Ora per un po 'sul programmatori e modelli. In precedenza è stato detto che il programmatore non ha cura per ciò che i modelli fanno con il contenuto. A livello concettuale questo è vero, ma nel mondo reale non si ha intenzione di aspettare il grafico di avere a costruire tutti i modelli dal nulla. Dopo tutto, la logica di business fa determinare quali contenuti è assegnato ai modelli. Quindi, il programmatore tipicamente modelli scheletro di configurazione per il progettista per iniziare. Questo di solito contiene gli elementi crudi come variabili di contenuti e di sezione loop, e forse un paio di semplici tag di markup in modo che non iniziano con il contenuto in un gran casino. Ecco un esempio di un modello di scheletro che scorre una lista di articoli e li visualizza in una tabella:


{Section name = anello arte = $ article}


{/ Sezione}
{$ articolo [arte] .headline}
{$ articolo [arte] .Data}
{$ articolo [arte] .Autore}

L'output può essere simile a questo:







Come è stato vinto ovest
2 DICEMBRE 1999
John Wayne
della squadra perde, Allenatore chiude
Feb 2, 2002
John Smith
Gourmet Cooking
23 Gennaio 1954
Betty Crocker

Ora, per alcune domande comuni:
Perché utilizzare i modelli a tutti? Cosa c'è di così difficile di scrivere Invece di {$ title}?
Rendere le cose più facili da leggere non è un obiettivo di progettazione, ma più di un effetto collaterale. Utilizzando i modelli ha benefici enormi, molti dei quali sono stati illustrati sopra. Dal momento che ci troviamo in un ambiente modello comunque, {$ title} è meno estranea a , Soprattutto quando si inizia a guardare in lunghe pagine di contenuto, quindi è stato abbastanza evidente che una sintassi più semplice contribuisce a rendere i modelli più facile da leggere e conservare.
Template prendere tempo per analizzare, rendendo le applicazioni molto più lento.
Questo può essere vero in alcuni casi, ma con Smarty non c'è da più lento di esecuzione di uno script PHP. Alla prima esecuzione di un modello, Smarty converte i file di modello in script PHP (chiamato modello di compilazione.) In seguito, lo script PHP è solo inclusa. Coppia questo con un acceleratore PHP e avete veramente un ambiente in rapida template con un overhead minimo.
Smarty è troppo complicato, come può essere così veloce?
Nucleo di Smarty è piuttosto magra considerando che cosa è capace. La maggior parte della sua funzionalità si trova in plugins. L'architettura a plugin è progettato in modo che solo i plugin richiesti vengono caricati su richiesta. Con questo quadro, aggiungendo anche centinaia di nuovi plugin non influire sulle prestazioni. Questo rende Smarty veloce, scalabile e flessibile.
Smarty ha anche caratteristiche di caching che può aggiornare e mantenere porzioni della pagina uncached a proprio piacimento in modo dinamico. Caching memorizza l'uscita dei modelli compilati, salvando la necessità di eseguirli ad ogni invocazione.
Tutto questo parlare di acceleratori, come viene eseguito Smarty senza uno?
In realtà funziona abbastanza bene senza. Smarty non richiede un acceleratore, ma il modello di file stessi si approfittare di uno, qualcosa che è unico per Smarty (AFAIK). Se non si dispone di un acceleratore, l'esecuzione del modello non è così veloce ma non lento con qualsiasi mezzo dal momento che non vengono analizzati! L'utente conserva anche tutti gli altri vantaggi e le caratteristiche di Smarty. Inoltre, poiché gli acceleratori sono liberamente disponibili non c'è davvero una scusa per non essere utilizzato uno. Ti aiuteranno prestazioni con tutte le applicazioni PHP, usando Smarty o no.
Come può essere più facile da mantenere?
Alcune cose non si possono spiegare, ma solo esperienza. Il vantaggio della separazione della logica dell'applicazione dalla presentazione non può essere sottolineato abbastanza. Smarty ha anche alcune caratteristiche di gestione degli errori Nizza, a variabili built-in console di debugging in modo da poter vedere la gerarchia modello e assegnati a colpo d'occhio. L'aggiunta di funzioni personalizzate a Smarty è facile come li cadere nella directory dei plugin e menzione nel modello.
Le variabili del modello non sono basati su XML, mio ​​editore non piace.
Il {} delimitatori sono solo un default, sono facili da distinguere tra i tag HTML. Se non ti piace loro, modificare le delimitatori o forse qualcosa di più simile XMLish Ci sono anche un sacco di contributi degli utenti per Dreamweaver e simili, dare loro uno sguardo nella zona contributi.
Questo è Smarty in poche parole, si spera è possibile aggiungere al vostro arsenale di strumenti per la creazione di applicazioni web. Per imparare veramente più, leggere il manuale di alto verso il basso, unire il forum e vedere ciò che le persone stanno discutendo

Caratteristiche .

  • Caching: Smarty offre funzionalità di caching a grana fine per la cache di tutti o parte di una pagina web resa, o di lasciare parti uncached. I programmatori possono registrare le funzioni modello come cacheable o non cachable, gruppo pagine memorizzate nella cache in unità logiche per facilitare la gestione, ecc.
  • File di configurazione: Smarty può assegnare le variabili tirati dai file di configurazione. Progettisti modelli possono mantenere i valori comuni a più modelli in un unico luogo, senza intervento da parte del programmatore, e le variabili di configurazione possono essere facilmente condivisi tra la programmazione e presentazione parti dell'applicazione.
  • Sicurezza: I modelli non contengono codice PHP. Pertanto, un designer modello non si scatena con tutta la potenza di PHP, ma solo il sottoinsieme di funzionalità messe a loro disposizione dal programmatore (codice di applicazione).
  • Facile da usare e gestire: pagine Web progettisti non hanno a che fare con la sintassi del codice PHP, ma invece una sintassi di template di facile da usare, non molto diverso da quello semplice HTML. I modelli sono una rappresentazione molto stretto della produzione finale, riducendo drasticamente il ciclo di progettazione.
  • Modificatori delle variabili: il contenuto delle variabili assegnate può essere facilmente regolato in mostra-time con i modificatori, come la visualizzazione a tutto maiuscolo, html escape, formattazione date, troncando i blocchi di testo, aggiungendo spazi tra i caratteri, ecc Anche in questo caso , questo viene realizzato senza alcun intervento da parte del programmatore.
  • Funzioni per i template: Molte funzioni sono disponibili per il grafico per gestire le attività quali la generazione di segmenti di codice HTML (menù a discesa, tavoli, pop-up, ecc), la visualizzazione di contenuti provenienti da altri modelli in linea, ciclare su array di contenuti , la formattazione del testo per l'uscita e-mail, in bicicletta anche se i colori, ecc.
  • Filtri:. Il programmatore ha il controllo completo della produzione del modello e dei contenuti del modello compilato con pre-filtri, post-filtri e filtri di uscita
  • Risorse:. I modelli possono essere estratti da un qualsiasi numero di fonti, creando nuovi gestori di risorse, poi usarli in modelli
  • Plugin: Quasi ogni aspetto di Smarty è controllato attraverso l'uso di plugin. Sono generalmente facile come li cadere nella directory plug-in e poi li citano nel modello o utilizzando nel codice dell'applicazione. Molti contributi utente-comunitari sono inoltre disponibili. (Vedi la sezione plugins del forum e wiki).
  • Componenti aggiuntivi: molti user-comunità ha contribuito Add-on sono disponibili come impaginazione, Form Validation, Drop Down Menu, calandra Data Pickers, ecc Questi strumenti aiutano ad accelerare il ciclo di sviluppo, non vi è alcuna necessità di ri- inventare la ruota o codice di debug che è già stabile e pronto per la distribuzione. (Vedere la sezione Add-on del forum e wiki).
  • Debug:. Smarty viene fornito con un built-in di debug console in modo che il grafico può visualizzare tutte le variabili assegnate e il programmatore può indagare template velocità di rendering
  • Compilazione:. Smarty compila modelli in codice PHP dietro le quinte, eliminando runtime analisi dei template
  • Prestazioni: Smarty esegue molto bene, nonostante la sua vasta gamma di funzionalità. La maggior parte delle capacità di Smarty si trovano nei plugin caricati on-demand. Smarty è dotato di numerosi strumenti di presentazione, riducendo al minimo il codice dell'applicazione e conseguente più rapido, meno soggetto a errori sviluppo di applicazioni / deployment. Template Smarty vengono compilati a PHP i file internamente (una volta), eliminando costose scansioni dei file template e sfruttando la velocità di PHP acceleratori op-code.

Cosa c'è di nuovo in questa versione:

  • annullare le modifiche di accesso eccellente a livello mondiale, e invece contare su USE_SUPER_GLOBALS per sicurezza

Cosa c'è di nuovo nella versione 2.6.23:

  • backticks striscia di {} matematica equazioni (mohrt)
  • errore tiro quando esiste template ma non leggibile (mohrt)

Cosa c'è di nuovo nella versione 2.6.22:

  • Questa release risolve un problema riscontrato con il Smarty 2.6 .21 rilascio e un motore di bug PCRE in PHP 5.2. Metodo concatenamento è stata rimossa per evitare il bug. Metodo concatenamento riapparirà in Smarty 3.

Altri software di sviluppo New Digital Group, Inc.

Smarty
Smarty

13 Apr 15

Commenti a Smarty

I commenti non trovato
Aggiungi commento
Accendere le immagini!