Document développeur

De OpenESubWiki.

Sommaire

Introduction

Ce document explique le fonctionnement général d'openESub. Il est exclusivement destiné aux développeurs.

Quelques normes

Dans le cadre d'un développement collaboratif comme celui d'openESub, il est très important de respecter des normes de codage uniques afin que le code reste facilement lisible par tous sans efforts d'adaptation.

Les normes retenues sont celles de la bibliothèque PEAR à l'exception des parties concernant les en-têtes obligatoires et l'utilisation de CVS qui sont décrits dans de précédents documents d'organisation.

Insistons lourdement sur le type d'indentation retenu (4 espaces) qui exclue les caractères 'tabulations'. Il ne doit pas y avoir le moindre caractère 'tabulation' dans les codes d'openESub. Une méthode efficace est de paramétrer son éditeur de texte favori pour qu'il remplace dynamiquement l'indentation par 4 espaces.

Insistons également sur la façon de nommer des variables/fonctions de la manière suivante : ceciEstUneFonction (une majuscule à chaque changement de mot, le reste en minuscules).

SMARTY

openESub utilise le moteur de templates SMARTY pour dissocier quasi-complètement le code PHP du code HTML. L'intérêt majeur de cette dissociation est qu'un web-designer peut modifier l'apparence de la page sans qu'un programmeur PHP doive intervenir et réciproquement. Les deux aspects sont dissociés.

En pratique, une page est donc dissociée en deux : une page PHP et une page de templates. Prenons un exemple simple de template...

<html>
  <body>
      Bonjour {$utilisateur} ! Votre mot de passe est {$mot_de_passe} !
  </body>
</html>

... et de script PHP associé...

<?php
  require_once('Smarty.class.php'); // On charge SMARTY
  $smarty = new Smarty(); // On crée un objet SMARTY
  $smarty->assign(array(
      'utilisateur' => 'Fabien',
      'mot_de_passe' => '123'
  ));
  $smarty->display('exemple.tpl');
?>

Le résultat sera alors :

<html>
  <body>
      Bonjour Fabien ! Votre mot de passe est 123 !
  </body>
</html>

Ceci est un exemple trivial. Mais SMARTY est très puissant, vous pouvez placez des boucles dans votre code HTML, des tests, des constantes définies dans un fichier unique... Allez jeter un oeil à la documentation de SMARTY pour avoir tous les détails.

Cache_Lite

Afin d'accélérer le calcul des pages et de soulager le serveur, openESub utilise un système de cache : PEAR/Cache_Lite. Ce dernier permet de stocker dynamiquement les pages html générées dans des fichiers temporaires qui seront directement utilisés au lieu de recalculer la page. Ces fichiers sont valables pendant une certaine durée. Au delà, la page est recalculée et on utilisera alors le nouveau fichier de cache...

NB : Dans la version CVS actuelle, le cache est temporairement désactivé pour que le débugage des pages soit plus facile.

Le fonctionnement de Cache_Lite est très simple. Prenons un exemple :

<?php

  require_once('Cache/Lite.php'); // Chargement de Cache_Lite
  $cache = new Cache_Lite(); // On crée un objet Cache_Lite
  
  // On teste si la page identifiée par 'exemple' est en cache
  if (!$data=$cache->get('exemple')) {
      // La page n'est pas en cache
      // On reconstruit la page (tout le code html est alors dans $data)
      $cache->save($data); // On cache la page
  } else {
      // La page est en cache
      // Toute la page est alors automatiquement dans $data
      // Pas besoin de recalculer quoique ce soit
  }
  echo($data); // On affiche la page  
  
?>

Pour plus d'informations, téléchargez le package complet de Cache_Lite et consultez le code source (bien documenté) ainsi que le fichier docs/examples qui regorge d'exemples.

Organisation générale

A faire

Conclusion

Compte-tenu de l'évolution constante du code d'openESub, ce document n'est pas forcément tout le temps à jour. Si vous constatez des problèmes de ce genre, contactez impérativement l'auteur.

Outils personnels