Subversion Repositories Applications.framework

Rev

Rev 239 | Rev 274 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 239 Rev 241
Line 10... Line 10...
10
 * @package		Framework
10
 * @package	Framework
11
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
11
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @copyright	Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
12
 * @copyright	Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
13
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
13
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
14
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 
14
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 
15
 * @version		SVN : $Id: Config.php 239 2010-11-25 18:04:00Z jpm $
15
 * @version	$Id: Config.php 241 2010-12-06 15:19:07Z jpm $
16
 * @link		/doc/framework/
16
 * @link		/doc/framework/
17
 */
17
 */
Line 18... Line 18...
18
 
18
 
Line 19... Line -...
19
class Config {
-
 
20
 
19
class Config {
21
	/**
-
 
22
	 * instance de la classe pointant sur elle même (pour le pattern singleton)
20
 
Line 23... Line -...
23
	 */
-
 
24
	private static $instance = null;
21
	/** Instance de la classe pointant sur elle même (pour le pattern singleton). */
25
 
-
 
26
	/**
22
	private static $instance = null;
Line 27... Line -...
27
	 * paramètres de configuration
-
 
28
	 */
-
 
29
	private static $parametres = array();
-
 
30
 
23
 
31
	/**
24
	/** Paramètres de configuration. */
32
	 * Constructeur vide
25
	private static $parametres = array();
33
	 */
26
 
34
	private function __construct() {
27
	private function __construct() {
Line 105... Line 98...
105
		}
98
		}
106
		return $retour;
99
		return $retour;
107
	}
100
	}
Line 108... Line 101...
108
 
101
 
109
	/**
102
	/**
110
	 * fusionne un tableau de paramètres avec le tableau de paramètres global
103
	 * Fusionne un tableau de paramètres avec le tableau de paramètres global
111
	 * @param array $ini le tableau à fusionner
104
	 * @param array $ini le tableau à fusionner
112
	 */
105
	 */
113
	private static function fusionner(array $ini) {
106
	private static function fusionner(array $ini) {
114
		self::$parametres = array_merge(self::$parametres, $ini);
107
		self::$parametres = array_merge(self::$parametres, $ini);
Line 115... Line 108...
115
	}
108
	}
116
 
109
 
117
	/**
110
	/**
118
	 * renvoie la valeur demandé grâce une chaine de paramètres
111
	 * Renvoie la valeur demandée grâce une chaîne de paramètres
119
	 * @param string $param la chaine de paramètres
112
	 * @param string $param la chaine de paramètres
120
	 * @param array $config le tableau de paramètre
113
	 * @param array $config le tableau de paramètre
121
	 * @return string la valeur de la chaine demandée
114
	 * @return string la valeur de la chaine demandée
Line 162... Line 155...
162
			self::$instance = new Config();
155
			self::$instance = new Config();
163
		}
156
		}
164
	}
157
	}
Line 165... Line 158...
165
 
158
 
166
	/**
159
	/**
167
	 * analyse un tableau de paramètres
160
	 * Analyse un tableau de paramètres.
168
	 * @param array $config le tableau de paramètres
161
	 * @param array $config le tableau de paramètres
169
	 * @return array le tableau analysé
162
	 * @return array le tableau analysé
170
	 */
163
	 */
171
	private static function analyserTableauIni($config = array()) {
164
	private static function analyserTableauIni($config = array()) {
Line 180... Line 173...
180
		}
173
		}
181
		return $config;
174
		return $config;
182
	}
175
	}
Line 183... Line 176...
183
 
176
 
184
	/**
177
	/**
185
	 * dans le cas des chaine de configuration à sous clé (ex.: cle.souscle)
178
	 * Dans le cas des chaine de configuration à sous clé (ex.: cle.souscle)
186
	 * evalue les valeurs correspondantes et crée les sous tableaux associés
179
	 * évalue les valeurs correspondantes et crée les sous tableaux associés.
187
	 * @param array $config tableau de configuration (par référence)
180
	 * @param array $config tableau de configuration (par référence)
188
	 * @param string $cle la cle dans le tableau
181
	 * @param string $cle la cle dans le tableau
189
	 * @param string $valeur la valeur à affecter
182
	 * @param string $valeur la valeur à affecter
190
	 */
183
	 */
Line 209... Line 202...
209
		}
202
		}
210
		return $config;
203
		return $config;
211
	}
204
	}
Line 212... Line 205...
212
 
205
 
213
	/**
206
	/**
214
	 * Evalue les valeurs de références à une clé dans le tableau config (cas du ref:cle)
207
	 * Évalue les valeurs de références à une clé dans le tableau config (cas du ref:cle).
215
	 * @param array $config tableau de configuration
208
	 * @param array $config tableau de configuration
216
	 * @param string $cle la clé dont il faut évaluer les références
209
	 * @param string $cle la clé dont il faut évaluer les références
217
	 */
210
	 */
218
	private static function evaluerReferences(&$config, $cle) {
211
	private static function evaluerReferences(&$config, $cle) {
Line 222... Line 215...
222
			}
215
			}
223
		}
216
		}
224
	}
217
	}
Line 225... Line 218...
225
 
218
 
226
	/**
219
	/**
227
	 * Evalue le code php contenu dans un clé tu tableau config
220
	 * Évalue le code php contenu dans un clé tu tableau config.
228
	 * @param array $config tableau de configuration (par référence)
221
	 * @param array $config tableau de configuration (par référence)
229
	 * @param string $cle le clé du tableau dont il faut évaluer la valeur
222
	 * @param string $cle le clé du tableau dont il faut évaluer la valeur
230
	 */
223
	 */
231
	private static function evaluerPhp(&$config, $cle) {
224
	private static function evaluerPhp(&$config, $cle) {
232
		if (preg_match('/^php:(.+)$/', $config[$cle], $correspondances)) {
225
		if (preg_match('/^php:(.+)$/', $config[$cle], $correspondances)) {
233
			eval('$config["'.$cle.'"] = '.$correspondances[1].';');
226
			eval('$config["'.$cle.'"] = '.$correspondances[1].';');
234
		}
227
		}
Line 235... Line 228...
235
	}
228
	}
236
 
229
 
237
	/**
230
	/**
238
	 * Charge un fichier ini dans le tableau des paramètres de l'appli
231
	 * Charge un fichier ini dans le tableau des paramètres de l'appli.
239
	 * @param string $fichier_ini le nom du fichier à charger
232
	 * @param string $fichier_ini le nom du fichier à charger
240
	 * @return array le fichier ini parsé
233
	 * @return array le fichier ini parsé
241
	 */
234
	 */
242
	public static function charger($fichier_ini) {
235
	public static function charger($fichier_ini) {
243
		self::verifierCreationInstance();
236
		self::verifierCreationInstance();
Line 244... Line 237...
244
		return self::parserFichierIni($fichier_ini);
237
		return self::parserFichierIni($fichier_ini);
245
	}
238
	}
246
 
239
 
247
	/**
240
	/**
248
	 * Acesseur pour la valeur d'un paramètre
241
	 * Accesseur pour la valeur d'un paramètre.
249
	 * @param string $param le nom du paramètre
242
	 * @param string $param le nom du paramètre
250
	 * @return string la valeur du paramètre
243
	 * @return string la valeur du paramètre
251
	 */
244
	 */
252
	public static function get($param = null) {
245
	public static function get($param = null) {
Line 253... Line 246...
253
		self::verifierCreationInstance();
246
		self::verifierCreationInstance();
254
		return self::getValeur($param, self::$parametres);
247
		return self::getValeur($param, self::$parametres);
255
	}
248
	}
256
 
249
 
257
	/**
250
	/**
258
	 * Vérifie si la valeur d'un paramètre existe
251
	 * Vérifie si la valeur d'un paramètre existe.
259
	 * @param string $param le nom du paramètre
252
	 * @param string $param le nom du paramètre
260
	 * @return boolean vrai si le paramètre existe, false sinon
253
	 * @return boolean vrai si le paramètre existe, false sinon
261
	 */
254
	 */
-
 
255
	public static function existe($param) {
-
 
256
		self::verifierCreationInstance();
-
 
257
		return self::existeValeur($param, self::$parametres);
-
 
258
	}
-
 
259
	
-
 
260
	/**
-
 
261
	 * Vérifie que tous les paramêtres de config nécessaires au fonctionnement d'une classe existe dans les fichiers
-
 
262
	 * de configurations.
-
 
263
	 * L'utilisation de cette méthode depuis la classe Config évite de faire appel à une classe supplémentaire.
-
 
264
	 * 
-
 
265
	 * @param array $parametres tableau des noms des paramètres de la config à verifier.
-
 
266
	 * @return boolean true si tous les paramétres sont présents sinon false.
-
 
267
	 */
-
 
268
	public static function verifierPresenceParametres(Array $parametres) {
-
 
269
		$ok = true;
-
 
270
		foreach ($parametres as $param) {
-
 
271
			if (is_null(self::get($param))) {
-
 
272
				$classe = get_class();
-
 
273
				$m = "L'utilisation de la classe $classe nécessite de définir '$param' dans un fichier de configuration.";
-
 
274
				trigger_error($m, E_USER_ERROR);
-
 
275
				$ok = false;
262
	public static function existe($param) {
276
			}
263
		self::verifierCreationInstance();
277
		}
264
		return self::existeValeur($param, self::$parametres);
278
		return $ok;