1: <?php
2: // declare(encoding='UTF-8');
3: /**
4: * Classe registre, qui permet un accès à différentes variables à travers les autres classes.
5: * C'est un singleton
6: *
7: * @category PHP 5.2
8: * @package Framework
9: * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
10: * @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
11: * @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
12: * @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
13: */
14: class Registre {
15:
16: /**
17: * Tableau associatif stockant les variables
18: */
19: private $stockage = array();
20: /**
21: * La classe registre se contient elle-même, (pour le pattern singleton)
22: */
23: private static $registre;
24:
25: /**
26: * Constructeur par défaut, privé, car on accède à la classe par le getInstance
27: */
28: private function __construct() {
29: }
30:
31: /**
32: * Fonction qui renvoie l'instance de classe en assurant son unicité, c'est l'unique méthode qui doit être
33: * utilisée pour récupérer l'objet Registre
34: */
35: public static function getInstance() {
36: if (self::$registre instanceof Registre) {
37: return self::$registre;
38: }
39: self::$registre = new Registre;
40: return self::$registre;
41: }
42:
43: /**
44: * Ajoute un objet au tableau selon un intitulé donné
45: * @param string l'intitulé sous lequel l'objet sera conservé
46: * @param mixed l'objet à conserver
47: */
48: public function set($intitule, $objet) {
49: if (is_array($objet) && isset($this->stockage[$intitule])) {
50: $this->stockage[$intitule] = array_merge((array) $this->stockage[$intitule], (array) $objet);
51: $message = "Le tableau $intitule présent dans le registre a été fusionné avec un nouveau tableau de même intitulé !";
52: trigger_error($message, E_USER_WARNING);
53: } else {
54: $this->stockage[$intitule] = $objet;
55: }
56: }
57:
58: /**
59: * Renvoie l'objet associé à l'intitulé donné en paramètre
60: * @return mixed l'objet associé à l'intitulé ou null s'il n'est pas présent
61: */
62: public function get($intitule) {
63: if (isset($this->stockage[$intitule])) {
64: return $this->stockage[$intitule];
65: }
66: return null;
67: }
68:
69: /**
70: * Détruit l'objet associé à l'intitulé, n'a pas d'effet si il n'y a pas d'objet associé
71: */
72: public function detruire($intitule) {
73: if (isset($this->stockage[$intitule])) {
74: unset($this->stockage[$intitule]);
75: }
76: }
77:
78: /**
79: * Teste si un objet est présent sous un intitulé donné
80: * @return boolean true si un objet associé à cet intitulé est présent, false sinon
81: */
82: public function existe($intitule) {
83: if(isset($this->stockage[$intitule])){
84: return true;
85: }
86: return false;
87: }
88: }
89: ?>