2010-10-26 4 views
21

Je lisais quelque part que PHP est une langue de gabarit. Qu'est-ce qu'une langue de gabarit? Qu'est-ce qui fait PHP un? Quelles sont les autres langues de templating?Qu'est-ce qu'une langue de gabarit?

+0

Le terme définit fondamentalement la portée d'utilisation. Un langage de modèle a des propriétés à mi-chemin entre un langage de programmation (complet) et un langage de macro (expansion). – mario

Répondre

18

La prémisse derrière un langage modèle est que le langage est "intégré" dans un autre document maître. Plus précisément, sur votre document moyen, la taille totale du document est principalement la source du document que le langage du modèle.

Tenir compte deux exemples: contrived

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. 

Vous pouvez voir dans le premier exemple, la langue enveloppe le texte du document. Dans le deuxième exemple, le texte du document est le plus répandu, avec juste un peu de code.

Certains langages de gabarit sont des langages universels complets, tels que PHP, ASP.NET et JSP de Java. D'autres sont plus limités conçus spécifiquement pour la modélisation, tels que Velocity et FreeMarker (les deux utilitaires pour Java).

De nombreux traitements de texte, tels que Microsoft Word, disposent de leurs propres fonctionnalités de modélisation, communément appelées «Fusion et publipostage».

7

PHP n'est pas nécessairement un langage de modèle, mais il peut en quelque sorte passer ce test en raison de la manière dont il est interprété.

Lors de la lecture du fichier PHP, seul le code dans les balises de bloc PHP (<?php et ?>) est examiné, le reste est transmis à la sortie. Donc un fichier .html pourrait être traité par l'interpréteur PHP, et rien ne se passerait, le HTML serait sorti.

Si certaines zones du fichier HTML contenaient des balises et du code PHP, elles seraient interprétées et afficheraient probablement des données dans ces emplacements. Cela pourrait être considéré comme un modèle. Habituellement, c'est l'idée d'avoir une couche de sortie, puis d'avoir un contenu dynamique qui va avec. Vous pouvez avoir un modèle de page de produit, puis en fonction d'une variable d'entrée, remplir un seul détail de produits/images/etc dans le modèle.

Il existe des moteurs de template pour PHP (Smarty pour un .. http://www.smarty.net/) que vous pouvez consulter. Je n'ai jamais été un fan d'eux, mais beaucoup de gens ont du succès avec ça.

9

Un langage de gabarit est essentiellement un langage qui permet de définir des espaces réservés qui devraient ensuite être remplacés aux fins de la mise en œuvre des conceptions. De toute évidence, les langages de modèles modernes prennent en charge non seulement les espaces réservés, mais aussi les boucles et les conditions souvent nécessaires à la conception d'une page Web. Certains supportent même des techniques plus avancées mais encore utiles comme l'héritage de template, les macros et le sandboxing. À propos de PHP: Comme PHP lui-même peut être interpolé en HTML, il peut être utilisé comme langage de modèle. D'autre part, PHP est assez verbeux, surtout si les balises courtes ne sont pas activées.

Un moteur de modèle rapide et riche en fonctionnalités est Twig. Je le recommanderais à smarty. Il offre plus de fonctionnalités (notamment l'héritage de template) et est plus rapide.