Subversion Repositories Applications.framework

Rev

Rev 467 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
467 jpm 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
 *
476 jpm 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>
467 jpm 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
?>