How to Create a Simple PHP Templating Function - Daggerhart

Mouais... le templating, au départ, c'est plutôt pour séparer le code PHP du HTML (l'objectif étant de permettre de bosser à plusieurs avec chacun sa spécialité sans se parasiter, déjà)

Du coup, je vois pas trop en quoi c'est du templating: ce sont des fichiers php avec des bouts de php dedans.

Pour y avoir réfléchi pas mal afin d'améliorer mon code, notamment dans mon «framework» perso, l'idée du templating est d'avoir des fichiers HTML que le PHP vient compléter selon une certaine logique, qui varie en fonction des frameworks.

Pour ma part, j'ai opté pour des fichiers HTML contenant des «balises» entre double accolades dont le contenu sera interprété selon certaines règles par la classe template:

  • {{$variable}} ou {{CONSTANTE}} : affiche le contenu de la variable ou de la constante
  • {{"texte"}} : affiche le texte si possible traduit (en fonction de la configuration de langue d'une autre classe si elle existe dans le projet)
  • {{objet->methode(parametres)}} : fait appel à la méthode en question si celle-ci est publique et que l'objet fait partie des dépendances injectées via une variable de contexte.

On peut également transmettre des données ponctuelles servant à «remplir» le template via un array passé en paramètre selon le principe "string_à_remplacer"=>"valeur".

... et c'est tout.

ça donne des fichiers tpl du genre:


header.html

<!DOCTYPE html> <html> <head> <title>{{APP_NAME}} - {{CURRENT_PAGE}}</title> <link rel="stylesheet" type="text/css" href="http://warriordudimanche.net/{{APP_CSS}}style.css"> <link rel="icon" type="image/svg" href="http://warriordudimanche.net/{{APP_IMG}}favicon.svg"> <link rel="favicon" type="image/svg" href="http://warriordudimanche.net/{{APP_IMG}}favicon.svg">

</head>

<body class="{{CURRENT_PAGE}} {{app->isMultiple()}}" id="top"> {{this->render('menu')}} <main>

menu.html

<nav class="classe{{CURRENT_PAGE}}"> <li><a href="http://warriordudimanche.net/?p=home">{{"Accueil"}}</a></li> <li><a href="http://warriordudimanche.net/?p=5eme">5eme</a></li> <li><a href="http://warriordudimanche.net/?p=4eme">4eme</a></li> <li><a href="http://warriordudimanche.net/?p=3eme">3eme</a></li> <li><a href="http://warriordudimanche.net/?p=fiches">{{"Fiches"}}</a></li>
<li><a href="http://warriordudimanche.net/article1097/5d9d944e5e6b9#" id="fullscreen" >Plein écran</a></li>
</nav>

on voit que le template header.html appelle à son tour le template menu, ce qui permet d'avoir des templates imbriqués et donc une grande «réusabilité» de chaque élément.

Le templating permet également d'éviter la dispersion du code PHP: quand on place des bouts de trucs et de machins partout ça devient vite illisible (et j'en sais quelque-chose). Le templating te force à organiser l'ensemble selon une logique qui te permet de t'y retrouver (et de retrouver où ça couille quand ça couille) (et ça couille toujours) (en fait, ça couille de source)( gag)

Souvent  mon code est devenu tellement illisible à force de patcher à la scie sauteuse entre deux portes que je préfère tout reprendre du début .jpg

 Répéter  couille plusieurs fois d affilée gratuitement  check  .jpg

Je ne m'étends pas davantage dessus vu qu'on peut trouver plein de ressources sur le templating en PHP et que pour en dire plus, il faudrait que je m'étende davantage sur mon «framework»

Via https://nicolas-delsaux.hd.free.fr/Shaarli/?_D5cZQ

❝ 2 commentaires ❞

1  jerry wham le

Question qui fache : php n'est pas déjà un langage de template ?

Le template ultime est celui qui n'utilise QUE du HTML/CSS. Il existe : transphporm (https://r.je/transphporm-php-templates). Toutes les données sont passées par des fichiers .tss dont la syntaxe se rapproche du css.

 
2  Bronco le

Dans l'esprit de départ, indéniablement...

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

Inutile de poster un commentaire à la con pour vous faire de la pub, ce sera filtré et dégagé direct...

Quelle est la deuxième lettre du mot whccjz ?