Subversion Repositories eFlore/Applications.del

Rev

Blame | Last modification | View Log | RSS feed

<?php
// declare(encoding='UTF-8');
/**
 * Le conteneur encapsule les classes servant aux scripts.
 * Il gère leur instanciation, ainsi que la récupération des paramètres depuis le fichier de configuration.
 *
 * @category   DEL
 * @package    Scripts
 * @subpackage Bibliotheque
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
 */
//TODO : initialiser tous les objets dans le conteneur
class Conteneur {

        protected $parametres = array();
        protected $partages = array();

        /**
         * Constructeur de la classe
         * @param Array $parametres (optionnel) les paramètres additionnels à ajouter à ceux des fichiers de config
         * */
        public function __construct(array $parametres = null) {
                $this->parametres = is_null($parametres) ? array() : $parametres;
        }

        /**
         * Obtenir un paramètre depuis le tableau de paramètres ou depuis le fichier de config
         * @param String $cle le nom du paramètre
         * @return la valeur du paramètre
         */
        public function getParametre($cle) {
                $valeur = isset($this->parametres[$cle]) ? $this->parametres[$cle] : Config::get($cle);
                return $valeur;
        }

        /**
         * Obtenir un paramètre depuis le tableau de paramètres ou depuis le fichier de config
         * et le transformer en tableau s'il est de la forme : "cle=valeur,cle=valeur,..."
         * @param String $cle le nom du paramètre
         * @return la valeur du paramètre
         */
        public function getParametreTableau($cle) {
                $tableau = array();
                $parametre = $this->getParametre($cle);
                if (empty($parametre) === false) {
                        $tableauPartiel = explode(',', $parametre);
                        foreach ($tableauPartiel as $champ) {
                                if (strpos($champ, '=') === false) {
                                        $tableau[] = trim($champ);
                                } else {
                                        list($cle, $val) = explode('=', $champ);
                                        $tableau[trim($cle)] = trim($val);
                                }
                        }
                }
                return $tableau;
        }

        /**
         * Enregistrer la valeur d'un paramètre
         * */
        public function setParametre($cle, $valeur) {
                $this->parametres[$cle] = $valeur;
        }

        /**
         * Permet d'obtenir un objet GestionBdd.
         */
        public function getBdd() {
                if (!isset($this->partages['Bdd'])){
                        $this->partages['Bdd'] = new Bdd();
                }
                return $this->partages['Bdd'];
        }

        /**
         * Permet d'obtenir un objet RestClient.
         */
        public function getRestClient() {
                if (!isset($this->partages['RestClient'])) {
                        $this->partages['RestClient'] = new RestClient();
                }
                return $this->partages['RestClient'];
        }

        /**
         * Permet d'obtenir un objet SquelettePhp.
         */
        public function getSquelettePhp() {
                if (!isset($this->partages['SquelettePhp'])) {
                        $this->partages['SquelettePhp'] = new SquelettePhp();
                }
                return $this->partages['SquelettePhp'];
        }

        /**
         * Permet d'obtenir un objet Messagerie.
         */
        public function getMessagerie() {
                if (!isset($this->partages['Messagerie'])) {
                        $this->partages['Messagerie'] = new TelaBotanica\Del\Commun\Messagerie($this);
                }
                return $this->partages['Messagerie'];
        }
}