* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org) * @license GNU-GPL-v3 * @license CECILL-v2 */ class Registre { /** * Tableau associatif stockant les variables */ private $stockage = array(); /** * La classe registre se contient elle-même, (pour le pattern singleton) */ private static $registre; /** * Constructeur par défaut, privé, car on accède à la classe par le getInstance */ private function __construct() { } /** * Fonction qui renvoie l'instance de classe en assurant son unicité, c'est l'unique méthode qui doit être * utilisée pour récupérer l'objet Registre */ public static function getInstance() { if (self::$registre instanceof Registre) { return self::$registre; } self::$registre = new Registre; return self::$registre; } /** * Ajoute un objet au tableau selon un intitulé donné * @param string l'intitulé sous lequel l'objet sera conservé * @param mixed l'objet à conserver */ public function set($intitule, $objet) { if (is_array($objet) && isset($this->stockage[$intitule])) { $this->stockage[$intitule] = array_merge((array) $this->stockage[$intitule], (array) $objet); $message = "Le tableau $intitule présent dans le registre a été fusionné avec un nouveau tableau de même intitulé !"; trigger_error($message, E_USER_WARNING); } else { $this->stockage[$intitule] = $objet; } } /** * Renvoie l'objet associé à l'intitulé donné en paramètre * @return mixed l'objet associé à l'intitulé ou null s'il n'est pas présent */ public function get($intitule) { if (isset($this->stockage[$intitule])) { return $this->stockage[$intitule]; } return null; } /** * Détruit l'objet associé à l'intitulé, n'a pas d'effet si il n'y a pas d'objet associé */ public function detruire($intitule) { if (isset($this->stockage[$intitule])) { unset($this->stockage[$intitule]); } } /** * Teste si un objet est présent sous un intitulé donné * @return boolean true si un objet associé à cet intitulé est présent, false sinon */ public function existe($intitule) { if(isset($this->stockage[$intitule])){ return true; } return false; } } ?>