Rev 880 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?phpclass Projet {private $ressources = null;private $paramsVerif = null;private $ressourcesVerif = null;private $versionVerif = null;private $cheminBase = '';private $cheminConfig = '';private $cheminBiblio = '';private $serviceGenerique = '';public function __construct(Ressources $ressources) {$this->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 servicesif (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;}}?>