Subversion Repositories Applications.framework

Rev

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

Rev Author Line No. Line
5 aurelien 1
<?php
105 aurelien 2
// declare(encoding='UTF-8');
5 aurelien 3
/**
105 aurelien 4
 * Classe registre, qui permet un accès à différentes variables à travers les autres classes.
5 aurelien 5
 * C'est un singleton
120 aurelien 6
 *
475 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>
105 aurelien 13
*/
5 aurelien 14
class Registre {
15
 
16
	/**
17
	 * Tableau associatif stockant les variables
18
	 */
84 jpm 19
	private $stockage = array();
5 aurelien 20
	/**
105 aurelien 21
	 * La classe registre se contient elle-même, (pour le pattern singleton)
5 aurelien 22
	 */
23
	private static $registre;
24
 
25
	/**
105 aurelien 26
	 * Constructeur par défaut, privé, car on accède à la classe par le getInstance
5 aurelien 27
	 */
84 jpm 28
	private function __construct() {
5 aurelien 29
	}
98 jpm 30
 
5 aurelien 31
	/**
105 aurelien 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
5 aurelien 34
	 */
84 jpm 35
	public static function getInstance() {
5 aurelien 36
		if (self::$registre instanceof Registre) {
37
			return self::$registre;
38
		}
39
		self::$registre = new Registre;
120 aurelien 40
		return self::$registre;
5 aurelien 41
	}
98 jpm 42
 
5 aurelien 43
	/**
105 aurelien 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
5 aurelien 47
	 */
84 jpm 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);
105 aurelien 51
			$message = "Le tableau $intitule présent dans le registre a été fusionné avec un nouveau tableau de même intitulé !";
5 aurelien 52
			trigger_error($message, E_USER_WARNING);
53
		} else {
84 jpm 54
			$this->stockage[$intitule] = $objet;
5 aurelien 55
		}
56
	}
57
 
58
	/**
105 aurelien 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
5 aurelien 61
	 */
84 jpm 62
	public function get($intitule) {
63
		if (isset($this->stockage[$intitule])) {
64
			return $this->stockage[$intitule];
5 aurelien 65
		}
66
		return null;
67
	}
98 jpm 68
 
5 aurelien 69
	/**
105 aurelien 70
	 * Détruit l'objet associé à l'intitulé, n'a pas d'effet si il n'y a pas d'objet associé
5 aurelien 71
	 */
84 jpm 72
	public function detruire($intitule) {
73
		if (isset($this->stockage[$intitule])) {
74
			unset($this->stockage[$intitule]);
5 aurelien 75
		}
76
	}
98 jpm 77
 
5 aurelien 78
	/**
105 aurelien 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
98 jpm 81
	 */
84 jpm 82
	public function existe($intitule) {
83
		if(isset($this->stockage[$intitule])){
5 aurelien 84
			return true;
85
		}
86
		return false;
87
	}
88
}
89
?>