1: <?php
2: // declare(encoding='UTF-8');
3: /**
4: * Classe fournissant des informations au Framework sur l'application.
5: *
6: * @category PHP 5.2
7: * @package Framework
8: * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
9: * @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
10: * @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
11: * @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
12: */
13: class Application {
14:
15: /**
16: * Tableau d'informations sur l'application
17: */
18: private static $info = null;
19: /**
20: * Chemin de base de l'application
21: */
22: private static $chemin = null;
23:
24: /**
25: * Initialise différentes classes du Framework nécessaires pour le fonctionnement de l'application.
26: * Ces classes sont ensuites controlées via les fichiers de config.ini.
27: * Elle est appelée automatiquement suite à la définition du chemin de l'application via Application::setChemin().
28: */
29: private static function initialiser() {
30: // Configuration du gestionnaire d'exception
31: GestionnaireException::configurer();
32: // Configuration du gestionnaire de logs
33: //Log::configurer();
34: }
35:
36: /**
37: * Permet d'indiquer le chemin de base de l'Application.
38: * Cette méthode doit obligatoirement être utilisée par l'application pour que le Framework fonctionne correctement.
39: * @param string $chemin_fichier_principal chemin de base
40: */
41: public static function setChemin($chemin_fichier_principal) {
42: if (self::$chemin === null) {
43: if (!file_exists($chemin_fichier_principal)) {
44: trigger_error("Le fichier indiqué n'existe pas. Utilisez __FILE__ dans la méthode set().", E_USER_ERROR);
45: } else {
46: self::$chemin = dirname($chemin_fichier_principal).DS;
47: self::initialiser();
48: }
49: } else {
50: trigger_error("Le chemin de l'application a déjà été enregistré auprès du Framework", E_USER_WARNING);
51: }
52: }
53:
54: /**
55: * accesseur pour le chemin
56: * @return string le chemin
57: */
58: public static function getChemin() {
59: return self::$chemin;
60: }
61:
62: /** Le tableau des informations sur l'application possède les clés suivantes :
63: * - nom : nom de l'application
64: * - abr : abréviation de l'application
65: * - encodage : encodage de l'application (ISO-8859-15, UTF-8...)
66: *
67: * @param array $info tableau fournissant des informations sur l'application
68: * @return void
69: */
70: public static function setInfo($info) {
71: if (self::$info === null) {
72: self::$info = $info;
73: } else {
74: trigger_error("Le informations de l'application ont déjà été enregistrées auprès du Framework", E_USER_WARNING);
75: }
76: }
77:
78: /**
79: * accesseur pour le tableau d'infos
80: * @param string $cle la clé à laquelle on veut accéder
81: */
82: public static function getInfo($cle = null) {
83: if ($cle !== null) {
84: if (isset(self::$info[$cle])) {
85: return self::$info[$cle];
86: }
87: } else {
88: return self::$info;
89: }
90: }
91: }