Autoblog du blog d'Idleman

Ce site n'est pas le site officiel d'idleman.fr.
C'est un blog automatisé qui réplique les articles de blog.idleman.fr

Petite initiation aux moteurs de templates : Quoi, Pourquoi et Comment

Wed, 03 Apr 2013 16:44:46 +0000 - (source)

Voila plusieurs années que je me promets de toucher un mot au sujet des moteurs de Template et de leurs applications, je profite de votre air éveillé et taquin de ce début de soirée pour placer le sujet (ce sera chose faite).

Une grossière présentation

Pour faire simple, un moteur de Template est une technique de programmation populaire qui permet de séparer distinctement l’interface graphique du reste de votre application.

Notez que par interface graphique j’entends toute la partie visuelle, la GUI, l’Interface, l’IHM, le skin, le visage, la moumoute, appelez ça comme vous voulez, ça n’en restera pas moins la partie qui constitue la communication visuelle avec l’utilisateur on ne parle donc pas uniquement du design mais aussi de la structure, de l’ergonomie, des animations etc…

Typiquement, un Template de projet web contiendra tous les fichiers html (structure),css et images (style/design) et JavaScript (animations).

Ainsi dans un projet web par exemple, le moteur de Template vous permettra d’avoir un fichier purement html/css/javascript d’un coté, et un fichier purement php/asp/java/… de l’autre vous dissociez donc d’un coté la vue (l’aspect visuel html/css etc..) des contrôleurs (le traitement pur des données via php/asp/java/ etc..)

Pourquoi?

Pourquoi utiliser cette technique me direz vous ? Ça peut de prime abord paraitre contraignant, inutile de dupliquer des fichiers pour rien.

Vous l’aurez compris de très nombreux avantages s’offre à vous avec ce modèle de développement.

Mais, ça fonctionne comment au juste ?

Eh bien typiquement ça dépend un peu du moteur de Template utilisé, mais généralement ça reste très simple :

Au lieu de créer une page index.php contenant tout votre code, vous allez placer votre code php dans une page index.php et votre html dans une page index.html
Puis à la fin du php vous signalerez que vous souhaitez lier cette page de traitement à la vue index.html :) .

Attends, attends !! Mais il va forcement y avoir un problème là : comment je vais faire pour afficher mes variables dans l’index.html?

Encore une fois, cela dépendra du moteur de Template utilisé, mais en gros, les variables seront toutes disponibles dans l’index.html via des balises « spéciales ».

Oulah, ça m’a l’air compliqué ton truc !!

Meuhnaaann ! Tu vas voir ça gère la cacahuète, le meilleur reste encore de mettre la main à la pâte pour comprendre les enjeux et les gains du Template, alors allons y gaiement bande de moules ! :D

Alors quel moteur de template choisir ?

En réalité je ne vais pas être très objectif là-dessus ^^, bien que le plus populaire (du fait de son grand âge surtout) soit le moteur de template Smarty, nous utiliseront ici le moteur RainTPL.

image

Vas falloir t’expliquer Idle, tu t’en sortiras pas comme ça :D !!

Bon okay okay, vous l’aurez voulu, zallez vous taper une autre liste pour la peine :

Je ne pense pas me tromper en affirmant qu’il va vite devenir la référence du Template, pour moi c’est déjà le cas, et je ne suis pas le seul à le clamer haut et fort.

(voila pour la p’tite explication :p)

Notez que parmi les développeurs, il y à quelques aigris qui critiquent vivement les systèmes de templates, si on ôte à ceux-ci ceux qui cachent leur ignorance derrière le dédain, on
peux retrouver quelques raisons fallacieuses type :

‘Moi je n’utilise pas de Template parce que c’est moins rapide que du php pur et dur’.

… (j’ai sortis mes petits point désapprobateurs, je vais me fâcher tout rouge !!)

C’est complètement faux, en effet RainTPL à l’instar de 99% des moteurs de Template utilise un système de cache en générant les php finaux sous formes de fichiers php générés, donc au final c’est du php simple, sauf que c’est totalement invisible pour nous (et tant mieux)

Bon arrêtons la papote et mettons les mains dans l’cambouis !

Téléchargeons rainTpl sur le site officiel : http://www.raintpl.com/Download/

On va créer un ptit projet de test avec une page index.php pour le traitement, et une page index.html pour la vue.

Dans l’archive de rainTPL, seul le fichier inc/rain.tpl.class.php nous intéresse, c’est la librairie en elle même, le reste sont des fioritures (on jette Tire la langue), dans mon exemple je met donc ce fichier que j’ai renommé rainTpl.php au même niveau que l’index.php et l’index.html

Voila le code de chacune:

index.php

image

index.html

image

(oui j’ai mis un peu de style, le time new roman me file des crises d’épilepsie)

Si pour une raison vraiment étrange votre copier coller ne fonctionne pas sur les screenshots (:D), vous pouvez trouver les sources directe ICI (bande de fainéants).

Toujours est il que vous obtenez un, ô combien magnifique, premier Template fonctionnel :

image

A retenir

Vous noterez donc deux fonctions (méthodes) importantes pour la partie traitement(index.php) :

assign(nom variable, valeur variable) : permet de déclarer une variable qui sera utilisable dans la vue, on peut lui fournir n’importe quoi : un objet, un tableau, un entier, une chaine, un furet, il en fera de l’or…

draw(nom de la vue) : permet de définir la vue qui sera attachée au traitement, de cette manière on peut par exemple attacher une vue erreur en cas d’erreur ou la vue index quand tout se passe bien (ok ok je vous embrouille, dites vous juste que ça permet de donner le html à afficher).

Coté vue (index.html) les balises “spéciales” dont je vous parlais et qui sont à connaitre sont au nombre de 4 :

{$variable} : affiche une variable (comme si vous aviez fait un ‘echo $variable’) 

{if= »condition »}{/if} : affiche selon une condition (équivalent de if(condition){consequence} en php)

{loop= »array »}{/loop} : permet de parcourir un tableau (équivalent de foreach($array){ } en php)

{include= »template »} : permet d’inclure une vue dans une autre (pratique pour inclure les header et footer que l’on retrouve partout dans l’application).

Vous ave évidemment  d’autres balises à dispo avec un ptit exemple pour chacune dans la doc.   

Quelques conseils pour avoir une structure correcte

RainTPL est assez permissif par rapport à la structure de votre projet, il suffit de lui indiquer des chemins, ce qui bon et mauvais à la fois car si il autorise une plus grande souplesse et n’interfère pas avec l’architecture projet, il n’incite pas non plus à instaurer une bonne structure.

Dans ce domaine, je pense que personne n’a le droit d’imposer une structure en argüant comme je l’ai maintes fois entendu que “c’est ce qu’il faut faire », mais puisque qu’ici c’est moi le patron (Tire la langue) je vais au moins me permettre de vous proposer une structure de projet avec rainTPL, que j’utilise pour Leed, DropCenter et bien d’autres projets pro/perso :

image

J’ai profité de la structure pour vous mettre deux templates que vous pouvez switcher en modifiant la constante DEFAULT_THEME dans le fichier configuration.php quelques exemple de lecture de variables, de tableau d’objets, d’utilisation de condition etc.. avec RainTPL
Vous pouvez télécharger cette structure et les exemples RainTPL qu’elle contient ICI.

On a bien deux Templates (légèrement fait à l’arrache) pour les mêmes traitements / control de données, il est donc possible d’en switcher sans toucher à quoique ce soit d’autre que la constante DEFAULT_THEME.

imageimage

 

Et sinon, dois je utiliser les templates tout le temps et pour n’importe quel projet ?

Bien sûr que non, il est évident qu’un petit script de deux pages contenant chacune trois lignes n’a pas réellement besoin d’un gestionnaire de Template,
cela dit pour les moyen et gros projets je vous encourage vivement a partir d’instinct sur un moteur Template.

Si vous n’en voyez pas l’utilité sur le moment,vous la verrez certainement par la suite, votre projet sera toujours plus simple à maintenir, évoluer, fusionner, embellir par la suite.

De plus cela vous obligera à tendre vers l’architecture MVC donc la redoutable efficacité n’est plus à prouver (bien qu’il y ai aussi des contestataires à ce sujet, mais bon on trouve de tous les avis sur le web il faut faire avec) et rainTPL est si discret que ça n’en alourdira pas votre projet pour autant.

Je sais que le sujet est entendu pour la plupart des développeurs de ce blog, mais si je suis parvenu à convertir un nouveau lecteur au “templarisme” et surtout à l’excellent RainTPL, je m’en satisferais !

Templatement votre,

Idle


Powered by VroumVroumBlog 0.1.32 - RSS Feed
Download config articles