Subversion Repositories Applications.framework

Rev

Rev 185 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
// declare(encoding='UTF-8');
/**
 * Classe fournissant des informations au Framework sur l'application.
 *
 * PHP version 5
 *
 * @category Debogage
 * @package Framework
 // Auteur principal :
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
 // Autres auteurs :
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
 * @version $Id: Application.php 188 2010-04-29 12:09:17Z jpm $
 * @copyright 1999-2009 Tela Botanica (accueil@tela-botanica.org)
 */
class Application {

        /**
         * Tableau d'informations sur l'application
         */
        private static $info = null;
        /**
         * Chemin de base de l'application
         */
        private static $chemin = null;

        /**
         * Initialise différentes classes du Framework nécessaires pour le fonctionnement de l'application.
         * Ces classes sont ensuites controlées via les fichiers de config.ini.
         * Elle est appelée automatiquement suite à la définition du chemin de l'application via Application::setChemin().
         */
        private static function initialiser() {
                // Configuration du gestionnaire d'exception
                GestionnaireException::configurer();
                // Configuration du gestionnaire de logs
                Log::configurer();
        }
        
        /**
         * Permet d'indiquer le chemin de base de l'Application.
         * Cette méthode doit obligatoirement être utilisée par l'application pour que le Framework fonctionne correctement.
         * @param string $chemin_fichier_principal chemin de base
         */
        public static function setChemin($chemin_fichier_principal) {
                if (self::$chemin === null) {
                        if (!file_exists($chemin_fichier_principal)) {
                                trigger_error("Le fichier indiqué n'existe pas. Utilisez __FILE__ dans la méthode set().", E_USER_ERROR);
                        } else {
                                self::$chemin = dirname($chemin_fichier_principal).DS;
                                self::initialiser();
                        }
                } else {
                        trigger_error("Le chemin de l'application a déjà été enregistré auprès du Framework", E_USER_WARNING);
                }
        }

        /**
         * accesseur pour le chemin
         * @return string le chemin
         */
        public static function getChemin() {
                return self::$chemin;
        }

        /** Le tableau des informations sur l'application possède les clés suivantes :
         * - nom : nom de l'application
         * - abr : abréviation de l'application
         * - encodage : encodage de l'application (ISO-8859-15, UTF-8...)
         *
         * @param array $info tableau fournissant des informations sur l'application
         * @return void
         */
        public static function setInfo($info) {
                if (self::$info === null) {
                        self::$info = $info;
                } else {
                        trigger_error("Le informations de l'application ont déjà été enregistrées auprès du Framework", E_USER_WARNING);
                }
        }

        /**
         * accesseur pour le tableau d'infos
         * @param string $cle la clé à laquelle on veut accéder
         */
        public static function getInfo($cle = null) {
                if ($cle !== null) {
                        if (isset(self::$info[$cle])) {
                                return self::$info[$cle];
                        }
                } else {
                        return self::$info;
                }
        }
}