2010-10-26 11 views
21

Stavo leggendo da qualche parte che PHP è un linguaggio di template. Cos'è esattamente una lingua di template? Cosa rende PHP uno? Quali sono le altre lingue per i modelli?Che cos'è un linguaggio di template?

+0

Il termine definisce fondamentalmente l'ambito di utilizzo. Un linguaggio dei modelli ha proprietà a metà strada tra un linguaggio di programmazione (completo) e un linguaggio macro (di espansione). – mario

risposta

18

La premessa dietro un linguaggio modello è che la lingua è "incorporata" all'interno di un altro documento master. In particolare, sul tuo documento medio, la dimensione totale del documento è principalmente l'origine del documento rispetto alla lingua del modello.

Consideriamo due esempi inventati:

print "This is a simple document. It has three lines." 
print "On the second line is my name: " + firstName 
print "This is the third line." 

vs

This is a simple document. It has three lines. 
On the second line is my name: $firstName 
This is the third line. 

Si può vedere nel primo esempio, la lingua avvolge il testo del documento. Nel secondo esempio, il testo del documento è il più diffuso, con solo un po 'di codice.

Alcuni linguaggi di modello sono linguaggi generici completi, come PHP, ASP.NET e JSP di Java. Altri sono più limitati progettati specificamente per i template, come Velocity e FreeMarker (entrambe le utilità per Java).

Molti programmi di elaborazione di testi, come Microsoft Word, hanno le proprie funzionalità per i modelli, comunemente denominate "Stampa unione".

7

PHP non è necessariamente un linguaggio di template, ma può passare quel test a causa del modo in cui viene interpretato.

Quando il file PHP viene letto, viene visualizzato solo il codice all'interno di tag di blocco PHP (<?php e ?>), il resto viene passato all'output. Quindi un file .html potrebbe essere elaborato dall'interprete di PHP, e non succederebbe nulla, l'HTML sarebbe emesso.

Se alcune delle aree del file HTML contenevano tag e codice PHP, sarebbe interpretato e probabilmente produrrebbe alcuni dati in tali posizioni. Questo potrebbe essere considerato un modello. Di solito è l'idea di avere un livello di output e quindi avere contenuti dinamici che lo accompagnano. È possibile avere un modello di pagina prodotto e, in base a una variabile di input, inserire nel modello solo singoli dettagli di prodotto/immagini/ecc.

Esistono motori di template effettivi per PHP (Smarty per uno .. http://www.smarty.net/) che è possibile dare un'occhiata.

Non sono mai stato un loro fan, ma molte persone hanno successo con esso.

9

Un linguaggio di templateing è fondamentalmente un linguaggio che consente di definire i segnaposto che in seguito dovranno essere sostituiti ai fini dell'attuazione dei progetti. Ovviamente i moderni linguaggi template non solo supportano i segnaposto, ma anche i loop e le condizioni che sono spesso necessarie per progettare una pagina web. Alcuni supportano anche tecniche più avanzate ma comunque utili come l'ereditarietà di modelli, macro e sandboxing.

Informazioni su PHP: poiché il PHP stesso potrebbe essere interpolato in HTML, può essere utilizzato come linguaggio modello. D'altra parte, PHP è piuttosto dettagliato, specialmente se i tag brevi non sono abilitati.

Un motore di template veloce e ricco di funzionalità è Twig. Lo raccomanderei a Smarty. Offre più funzionalità (in particolare l'ereditarietà dei modelli) ed è più veloce.

Problemi correlati