PHP : micro système de template

Parfois on a besoin de pouvoir interagir avec des templates sans vouloir charger une grosse librairie genre Twig. On peut aussi ne pas trop apprécier le système get_template_part() de WordPress. Bref, on a juste besoin de passer quelques variables dans un template et de récupérer le résultat. Vite fait. Cela peut être utile dans bien des cas.

Voici donc une petite fonction qui permet de charger un fichier PHP en y passant des variables et de récupérer une string. Il est possible de lui passer tout type de variables.

Actuellement elle est prévue pour fonctionner avec WordPress. Mais en la bricolant un peut vous pourriez la transformer pour un autre usage. Il faudrait remplacer la fonction locate_template() à la ligne 3. Le code source de cette fonction est donné dans la doc…

Petit détail important : le nom des variables doit être identique dans le template et dans l’appel de la fonction.
Voici la fonction:

function load_tpl($templateName, $vars = array())
{
  $template = locate_template('templates/'.$templateName.'.php');
  if (!file_exists($template)) {
    throw new Exception('Template '.$templateName.' introuvable.');
  }
  ob_start();
  extract($vars);
  include $template;
  $content = ob_get_contents();
  ob_end_clean();
  return $content;
}

Voici le template d’exemple appeler

<h2><?= $titre ?></h2>
<u>
<?php
foreach ($liste as $key => $value) {
  echo '<li>'.$value.'</li>';
}
?>
 </u>

Et enfin voici un exemple d’appel

$tpl_string = load_tpl('email/liste', array(
  'titre' => 'Fruits', 
  'liste' => array('pomme', 'abricot')
);

Je vous laisse deviner le résultat…
PS : vous devez quand même faire un « echo » ou un <?= $myvar ?>

Articles similaires

Commencez à saisir votre recherche ci-dessus et pressez Entrée pour rechercher. ESC pour annuler.

Retour en haut