* @author Jean-Pascal MILCENT * @license GPL v3 * @license CECILL v2 * @version 1.0 * @copyright 1999-2012 Tela Botanica (accueil@tela-botanica.org) */ class Syntaxons extends Commun {// héritage de commun à cause du cache ! private $sousService; public function consulter($ressources, $parametres) { spl_autoload_register(array($this, 'chargerSyntaxons')); $this->parametres = $parametres; $this->ressources = $ressources; $this->analyserRessources(); $resultat = $this->executerSousService(); return $resultat; } private function analyserRessources() { $nb_ressources = count($this->ressources); switch ($nb_ressources) { case 0 : // syntaxons/ $this->sousService = 'SyntaxonsTous'; break; case 1 : // syntaxons/#type_code:#code $this->sousService = 'SyntaxonsCode'; break; case 2 : // syntaxons/code catminat/relations $this->sousService = 'SyntaxonsRelationsToutes'; break; case 3 : // syntaxons/code catminat/relations /#type_relation $this->sousService = 'SyntaxonsRelation'; break; default: $message = 'Erreur dans l\'url de votre requête :
La ressource demandée n\'existe pas.'; $code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE; throw new Exception($message, $code); break; } } private function executerSousService() { if (isset($this->sousService)) { $classe = $this->sousService; //require_once dirname(__FILE__).DS.'syntaxons'.DS.$classe.'.php'; $sousService = new $classe(new Conteneur()); $resultat = $sousService->consulter($this->ressources, $this->parametres); } else { $message = "L'analyse des ressources n'a pu aboutir à déterminer le sous service à executer."; $code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE; throw new Exception($message, $code); } return $resultat; } private function chargerSyntaxons($classe) { $base = dirname(__FILE__).DS; $chemin = $base.DS.'syntaxons'.DS; $fichierATester = $chemin.$classe.'.php'; if (file_exists($fichierATester)) { include_once $fichierATester; return null; } } } ?>