Rev 1795 | Rev 1821 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Le conteneur encapsule l'instanciation des classes ainsi que la récupération des paramètres depuis l'url ou* les fichiers de configuration** @category DEL* @package Bibliotheque* @version 0.1* @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//TODO : créer un tableau de partageclass Conteneur {protected $parametres;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;}//--------------------------------------------------------------------------------------------------------// TODO : Supprimer le chargement de configuration présent dans des fichiers séparés./*** Charger la configuration depuis un fichier .ini.** @param String $fichier le nom du fichier de configuration* */public function chargerConfiguration($fichier) {$cheminConfigurations = Config::get('chemin_configurations');if ($cheminConfigurations == null || $cheminConfigurations == '') {$message = "Le parametre de configuration 'chemin_configurations' n'est pas défini.";$code = RestServeur::HTTP_CODE_ERREUR;throw new Exception($message, $code);}$cheminConfigService = $cheminConfigurations.$fichier;if (file_exists($cheminConfigService) === false) {$nomClasse = get_class($this);$message = "Classe $nomClasse : le fichier de configuration du service est introuvable : $cheminConfigService ";$code = RestServeur::HTTP_CODE_ERREUR;throw new Exception($message, $code);}Config::charger($cheminConfigService);}public function getBdd() {if (!isset($this->partages['Bdd'])){$this->partages['Bdd'] = new Bdd();}return $this->partages['Bdd'];}public function getRestClient() {if (!isset($this->partages['restClient'])){$this->partages['restClient'] = new RestClient();}return $this->partages['restClient'];}public function getUrl($base) {return new Url($base);}public function getControleAcces() {if (!isset($this->partages['controleAcces'])) {$this->partages['controleAcces'] = new ControleAcces($this);}return $this->partages['controleAcces'];}public function getNavigation() {if (!isset($this->partages['navigation'])) {$this->partages['navigation'] = new Navigation($this);}return $this->partages['navigation'];}public function getContexte() {if (!isset($this->partages['contexte'])) {$this->partages['contexte'] = new Contexte($this, $_SERVER, $_GET, $_POST, $_SESSION, $_COOKIE);}return $this->partages['contexte'];}public function getUtilisateur() {if (!isset($this->partages['utilisateur'])) {$this->partages['utilisateur'] = new GestionUtilisateur($this);}return $this->partages['utilisateur'];}}