2009-11-05 3 views
28

Recentemente ho scoperto il framework PHP Kohana (che è fantastico) e stavo leggendo una discussione sull'utilizzo in combinazione con un motore di template come Smarty o Twig. La mia domanda è perché preoccuparsi? Sicuramente un framework MVC, per definizione, è un motore di template. Anche il PHP "grezzo" è, probabilmente, un motore di template. Quali sono i possibili benefici di aggiungere un altro livello di astrazione a quello che è già presente in un framework come Kohana?Perché utilizzare un motore di template con un framework?

EDIT - mi rendo conto che un framework MVC non è la stessa cosa di un motore di template, ma sicuramente la parte V fa lo stesso lavoro? Forse sarebbe un modo migliore di formulare le cose; perché aggiungere un motore di template sulla parte V di un framework MVC?

risposta

17

Ho due molto buone ragioni mi viene in mente per fare questo ...

  1. Creazione di markup che si ripete in tutto il sito in un formato coerente è più facile, più è possibile aggiornare in un secondo momento, senza un sacco di grepping.
  2. Se questo è per una società reale, le persone che determinano il contenuto non hanno molta familiarità con l'HTML e molto meno con PHP. Avere un semplice linguaggio template che mantiene gli stili alla ricerca del giusto modo e genera un markup valido senza molta conoscenza del codice è davvero utile.
8

A meno che non si consente per brevi tag,

{$foo} 

è molto più leggibile di

<?php echo $foo; ?> 

moltiplicato nel corso di un progetto di grandi dimensioni, si aggiunge.

+2

Questo ha senso, la semplice riduzione delle sequenze di tasti può essere una manna dal cielo! :) – Mathew

+1

Un confronto migliore è il più semplice * possibile * escape: '{$ user_data | escape}' o '{$ user_data}' vs Kzqai

+1

Con tag brevi su è solo ' '. – DanMan

16

In primo luogo, PHP non è un motore di template.

Successivamente, il framework MVC definisce che il framework è suddiviso in Model, View e Control. Ciò non significa che il framework abbia un motore di template, sebbene la Vista possa essere integrata con un motore di template nativo o esterno. Pertanto il framework può o non può avere un motore di template.

In terzo luogo, Visualizza! = Modello. La vista si riferisce solo al modo in cui i dati vengono visualizzati - non c'è alcun modello coinvolto di solito, mentre il motore del template si riferisce a un pezzo di codice in grado di inserire dati in modelli - il che consente di ridurre notevolmente la necessità di modificare tutti i file quando è possibile modificarli nei modelli

Infine, gli utenti del framework possono preferire utilizzare un motore di templatura più comune come Smarty sul motore di template nativo nel framework. Non è necessario imparare i nuovi tag nel motore di template nativo.

+0

Quindi stai dicendo che usare un motore di template su un framework vale la pena quando conosci già la sintassi del motore dei template? E 'l'unico + ve? – Mathew

+0

Inoltre, per favore puoi approfondire il tuo commento su MCV! = Motore di template, poiché questo è davvero il punto della mia domanda. Sicuramente la parte Visualizza di MCV * è * un modello? – Mathew

+0

View non significa template. La visualizzazione si riferisce solo al modo in cui i dati vengono visualizzati, mentre il motore del modello si riferisce a un pezzo di codice in grado di inserire i dati in modo graduale nei modelli. – mauris

6

Uno dei motivi principali per cui si desidera utilizzare un motore di template separato è che PHP raw è un po 'eccessivo per la presentazione del proprio sito. Se stai solo creando il tuo sito e hai una buona idea di come i template del sito dovrebbero adattarsi, allora questo non è proprio uno svantaggio, ma per progetti più grandi, si intromette.

Se il progetto ha superato un singolo sviluppatore, o se si desidera aggiungere un designer ancora prima, PHP è probabilmente un linguaggio troppo difficile per esprimere la presentazione. I linguaggi di template costruiti appositamente sono a vantaggio perché sono semplici, e non ti dare così tanta corda da impiccarti.

I progetti più grandi, anche quando non richiedono molto input da più sviluppatori, possono rendere un po 'ingombrante la forma libera di PHP semplice. il motore di template appositamente costruito fornisce (o applica) una struttura di base al modo in cui ogni modello si adatta al resto.

+1

Vedo il tuo punto, ma non considererei il PHP raw troppo per scopi di presentazione; Sono abbastanza contento di rischiare di impiccarmi con gli spaghetti PHP! – Mathew

+0

@MattW Basta lanciarlo, ma questa è una pratica incredibilmente poco accessibile e la maggior parte delle persone non vuole lavorare con qualcuno che fa questo genere di cose. –

+1

eh ?! Conoscere un linguaggio di scripting e usarlo, piuttosto che affidarsi a un livello di astrazione potenzialmente inutile, è una pratica poco usabile ... Questo commento riassume abbastanza bene le cose; http://www.talkphp.com/general/4001-template-engine.html#post22329 – Mathew

2

Mauris ha già coperto il motivo per cui MVC! = Template engine, ma vorrei aggiungere che più potente è il motore di template, più pulito e conciso è il tuo template. Ciò rende particolarmente facile per le persone che non hanno familiarità con PHP per modificarle (ad es. Se un designer/sviluppatore front-end ha bisogno di modificare l'HTML). In generale, MVC non vanta questo tipo di funzionalità.

Dai un'occhiata a questo example da Smarty. Non ho mai usato il motore e rispondere a questa domanda è la prima volta che ho visto il suo markup, ma posso già dire esattamente cosa sta facendo.

Inoltre, la quantità di codice che si deve scrivere è notevolmente inferiore poiché Smarty e altri motori si occupano di cose banali per te come i colori delle righe alternate e il contenuto alternativo per i set di dati vuoti nel primo esempio e cose stupide come formattazione degli elenchi <select> in this example.

+0

Il disaccoppiamento dello sviluppatore front-end è una buona ragione. +1 – Mathew

1

MVC implementa la gestione di modelli PHP, se lavori in un team con i web designer potrebbe essere meglio utilizzare i modelli HTML. Smarty e Twig sono famosi e buoni. In ogni caso, basta scegliere il motore di template con cui ti senti più a tuo agio.

+0

Interessante sito di comparazione della velocità ... – Kzqai