Subversion Repositories Applications.framework

Rev

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