ressources = $ressources; } public function setCheminBase($chemin) { $this->cheminBase = $chemin; } public function setCheminConfig($chemin) { $this->cheminConfig = $chemin; } public function setCheminBiblio($chemin) { $this->cheminBiblio = $chemin; } public function setParamsVerif($paramsVerificateur) { $this->paramsVerif = $paramsVerificateur; } public function setVersionVerif($versionVerificateur) { $this->versionVerif = $versionVerificateur; } public function setRessourcesVerif($ressourcesVerificateur) { $this->ressourcesVerif = $ressourcesVerificateur; } public function setServiceGenerique($generique) { $this->serviceGenerique = $generique; } public function initialiser() { $this->chargerConfig(); // php5.3 : Enregistrement en première position des autoload de la méthode gérant les classes des services if (phpversion() < 5.3) { spl_autoload_register(array($this, 'chargerClasseProjet')); } else { spl_autoload_register(array($this, 'chargerClasseProjet'), true , true); } } private function chargerConfig() { $projet = $this->getNom(); $chemin = $this->cheminConfig."config_$projet.ini"; Config::charger($chemin); } public function getNom() { return $this->ressources->getProjetNom(); } public function getClasse() { return $this->ressources->getServiceClasse().ucfirst($this->getNom()); } private function chargerClasseProjet($classe) { if (class_exists($classe)) { return null; } $chemins = array(); $chemins[] = $this->cheminBase.$this->getNom().DS; $chemins[] = $this->cheminBase.'commun'.DS; $chemins[] = $this->cheminBiblio; $chemins[] = $this->cheminBiblio.'generique'.DS; $chemins[] = $this->cheminBiblio.'interfaces'.DS; $chemins[] = $this->cheminBiblio.'nom'.DS; $chemins[] = $this->cheminBiblio.'nom'.DS.'decorateurs'.DS; $chemins[] = $this->cheminBiblio.'ontologie'.DS; $chemins[] = $this->cheminBiblio.'ontologie'.DS.'decorateurs'.DS; foreach ($chemins as $chemin) { $chemin = $chemin.$classe.'.php'; if (file_exists($chemin)) { require_once $chemin; } } } public function verifier() { $this->paramsVerif->verifier(); $this->ressourcesVerif->verifier(); $this->versionVerif->verifier(); $this->verifierExistanceServiceClasse(); } private function verifierExistanceServiceClasse() { $classe = $this->getClasse(); $existe = $this->verifierExistanceClasseDuProjet($classe); if ($existe === false) { $service = $this->ressources->getServiceNom(); $projet = $this->getNom(); $message = "La classe du service demandé '$service' n'existe pas dans le projet '$projet' !"; $code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE; throw new Exception($message, $code); } } private function verifierExistanceClasseDuProjet($classe) { $chemins = array(); $chemins[] = $this->cheminBase.$this->getNom().DS.$classe.'.php'; $chemins[] = $this->cheminBase.'commun'.DS.$classe.'.php'; $existe = false; foreach ($chemins as $chemin) { if (file_exists($chemin)) { $existe = true; break; } } return $existe; } public function consulter() { $serviceNom = $this->getClasse(); $service = new $serviceNom($this->serviceGenerique); $retour = $service->consulter(); return $retour; } } ?>