Classe de gestion avancée des cookies

Description

Salut,
Pour un projet, j'avais besoin de gérer un nombres relativements importants de cookies de manière simple. Du coup, j'ai codé 2 classes : CookiesManager et Cookie. La classe CookiesManager permet de répertorier tous les cookies et les transforme en instance de la classe Cookie, plus simple à gérer qu'avec les fonctions natives de PHP, puisque qu'un grand nombre d'opérations sont simplifiées.
CookiesManager est un singleton, donc l'instance se récupère grâce à la méthode getInstance(). La fonction principale du gestionnaire est la possibilité de récuperer un cookie à partir de son nom grâce à la méthode getCookieByName($name).
Cookie est très simple a utiliser : lorsque l'on crée un nouveau Cookie, il va automatiquement s'ajouter à la liste des cookies du gestionnaires de cookies. La suppression d'un cookie se fait via la méthode delete(). On peut changer la date d'expiration du cookie via la méthode setExpiration($expiration), cet qui va impliquer une mise à jour automatique de toutes les variables du cookie ... Enfin, pour enregister une variable et récuperer, il faut utiliser les méthodes setVariable($key, $value) et getVariableValueByKey($key).
L'utilisation est donc très simple, et mieux vaut un bon exemple plutôt que de longues explications ...

Source / Exemple :


<?php
/* -------------------- */
   require_once('cookies/cookiesmanager.class.php');
   require_once('cookies/cookie.class.php');
/* -------------------- */
   $manager = CookiesManager :: getInstance();
   try
   {
      $user = $manager -> getCookieByName('user');
   }
   catch(NotExistingCookieException $e)
   {
      $user = new Cookie('user', Cookie :: END_OF_SESSION);
      /* Pour un cookie qui dure 30 secondes, on peut faire :
         $user = new Cookie('user', time() + 30);
         ou
         $user = new Cookie('user');
         $user -> setExpiration(time() + 30); */
      $user -> setVariable('name', (isset($_GET['name'])) ? $_GET['name'] : 'Visiteur');
      $user -> setVariable('seen', 0);
   }
   $seen = $user -> getVariableValueByKey('seen');
   $seen++;
   $user -> setVariable('seen', $seen);
/* -------------------- */
   echo '<pre>';
   $name = $user -> getVariableValueByKey('name');
   echo 'Salut à toi '.$name.', tu as vu cette page '.$seen." fois en 30 secondes ! \r\n";
   echo '</pre>';
/* -------------------- */
?>

Conclusion :


Alors je sais qu'il n'y a pas de commentaires ... En fait, j'en avais mis plein, mais j'ai tout effacé lors d'une première refonte. Mais je compte commenter et mettre à jour dès que j'ai un peu de temps :)
++ !
L.S.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.