Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 957 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 957 Rev 1012
1
<?php
1
<?php
2
/**
2
/**
3
* Description :
3
* Description :
4
* Classe principale de chargement des services d'eFlore.
4
* Classe principale de chargement des services d'eFlore.
5
*
5
*
6
* Encodage en entrée : utf8
6
* Encodage en entrée : utf8
7
* Encodage en sortie : utf8
7
* Encodage en sortie : utf8
8
* @package eflore-projets
8
* @package eflore-projets
9
* @author Jennifer DHÉ <jennifer.dhe@tela-botanica.org>
9
* @author Jennifer DHÉ <jennifer.dhe@tela-botanica.org>
10
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
10
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
11
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
11
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
12
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
13
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
13
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
14
* @version 0.1
14
* @version 0.1
15
* @copyright 1999-2011 Tela Botanica (accueil@tela-botanica.org)
15
* @copyright 1999-2011 Tela Botanica (accueil@tela-botanica.org)
16
*/
16
*/
17
class Projets extends RestService {
17
class Projets extends RestService {
18
 
18
 
19
	/** Contients les paramètres.*/
19
	/** Contients les paramètres.*/
20
	private $parametres = array();
20
	private $parametres = array();
21
	/** Contients les ressources.*/
21
	/** Contients les ressources.*/
22
	private $ressources = array();
22
	private $ressources = array();
23
 
23
 
24
	/** Nom du projet courrant. */
24
	/** Nom du projet courrant. */
25
	private $projetNom = array();
25
	private $projetNom = array();
26
	/** Nom du service demandé. */
26
	/** Nom du service demandé. */
27
	private $serviceNom = array();
27
	private $serviceNom = array();
28
	/** Chemin vers le dossier courrant. */
28
	/** Chemin vers le dossier courrant. */
29
	private $cheminCourrant = null;
29
	private $cheminCourrant = null;
30
	private $classe = null;
30
	private $classe = null;
31
 
31
 
32
	private $cache;
32
	private $cache;
33
 
33
 
34
	/** Indique si oui (true) ou non (false), on veut utiliser les paramètres brutes. */
34
	/** Indique si oui (true) ou non (false), on veut utiliser les paramètres brutes. */
35
	protected $utilisationParametresBruts = true;
35
	protected $utilisationParametresBruts = true;
36
 
36
 
37
	public function __construct() {
37
	public function __construct() {
38
		$this->cheminCourrant = dirname(__FILE__).DS;
38
		$this->cheminCourrant = dirname(__FILE__).DS;
39
	}
39
	}
40
 
40
 
41
	public function consulter($ressources, $parametres) {
41
	public function consulter($ressources, $parametres) {
42
		$resultat = '';
42
		$resultat = '';
43
		$reponseHttp = new ReponseHttp();
43
		$reponseHttp = new ReponseHttp();
44
		try {
44
		try {
45
			$this->initialiserRessourcesEtParametres($ressources, $parametres);
45
			$this->initialiserRessourcesEtParametres($ressources, $parametres);
46
			$resultat = $this->traiterRessources();
46
			$resultat = $this->traiterRessources();
47
			$reponseHttp->setResultatService($resultat);
47
			$reponseHttp->setResultatService($resultat);
48
		} catch (Exception $e) {
48
		} catch (Exception $e) {
49
			$reponseHttp->ajouterErreur($e);
49
			$reponseHttp->ajouterErreur($e);
50
		}
50
		}
51
		if(strpos($_SERVER['SCRIPT_NAME'], 'phpunit') === FALSE) $reponseHttp->emettreLesEntetes();
51
		if(strpos($_SERVER['SCRIPT_NAME'], 'phpunit') === FALSE) $reponseHttp->emettreLesEntetes();
52
		$corps = $reponseHttp->getCorps();
52
		$corps = $reponseHttp->getCorps();
53
		return $corps;
53
		return $corps;
54
	}
54
	}
55
 
55
 
56
	private function initialiserRessourcesEtParametres($ressources, $parametres) {
56
	private function initialiserRessourcesEtParametres($ressources, $parametres) {
57
		$this->ressources = $ressources;
57
		$this->ressources = $ressources;
58
		$this->parametres = $parametres;
58
		$this->parametres = $parametres;
59
	}
59
	}
60
 
60
 
61
	private function traiterRessources() {
61
	private function traiterRessources() {
62
		$retour = '';
62
		$retour = '';
63
		if ($this->avoirRessources()) {
63
		if ($this->avoirRessources()) {
64
			if ($this->avoirRessourceProjet()) {
64
			if ($this->avoirRessourceProjet()) {
65
				$this->chargerNomDuService(); // défini $this->serviceNom
65
				$this->chargerNomDuService(); // défini $this->serviceNom
66
				$this->initialiserProjet(); // autoload defined here
66
				$this->initialiserProjet(); // autoload defined here
67
				if ($this->avoirRessourceService()) {
67
				if ($this->avoirRessourceService()) {
68
					$this->classe = self::debusquerClasse($this->projetNom, $this->serviceNom);
68
					$this->classe = self::debusquerClasse($this->projetNom, $this->serviceNom);
69
					$retour = $this->initialiserService();
69
					$retour = $this->initialiserService();
70
				}
70
				}
71
			}
71
			}
72
		}
72
		}
73
		return $retour;
73
		return $retour;
74
	}
74
	}
75
 
75
 
76
	private function avoirRessources() {
76
	private function avoirRessources() {
77
		$presenceDeRessources = false;
77
		$presenceDeRessources = false;
78
		if (isset($this->ressources) && count($this->ressources) > 0) {
78
		if (isset($this->ressources) && count($this->ressources) > 0) {
79
			$presenceDeRessources = true;
79
			$presenceDeRessources = true;
80
		} else {
80
		} else {
81
			$message = "Aucune ressource n'a été indiquée.\n".
81
			$message = "Aucune ressource n'a été indiquée.\n".
82
				"Veuillez indiquer au moins un code de projet et un type de service.";
82
				"Veuillez indiquer au moins un code de projet et un type de service.";
83
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
83
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
84
			throw new Exception($message, $code);
84
			throw new Exception($message, $code);
85
		}
85
		}
86
		return $presenceDeRessources;
86
		return $presenceDeRessources;
87
	}
87
	}
88
 
88
 
89
	private function avoirRessourceProjet() {
89
	private function avoirRessourceProjet() {
90
		$presenceRessourceProjet = false;
90
		$presenceRessourceProjet = false;
91
		$projet = $this->ressources[0];
91
		$projet = $this->ressources[0];
92
		$projetsDispo = Outils::recupererTableauConfig('projetsDispo');
92
		$projetsDispo = Outils::recupererTableauConfig('projetsDispo');
93
		if (in_array($projet, $projetsDispo)) {
93
		if (in_array($projet, $projetsDispo)) {
94
			$presenceRessourceProjet = true;
94
			$presenceRessourceProjet = true;
95
		} else {
95
		} else {
96
			$message = "La ressource '$projet' n'indique pas un projet existant.\n".
96
			$message = "La ressource '$projet' n'indique pas un projet existant.\n".
97
				"Les projets existant sont :\n".implode(', ', $projetsDispo);
97
				"Les projets existant sont :\n".implode(', ', $projetsDispo);
98
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
98
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
99
			throw new Exception($message, $code);
99
			throw new Exception($message, $code);
100
		}
100
		}
101
		return $presenceRessourceProjet;
101
		return $presenceRessourceProjet;
102
	}
102
	}
103
 
103
 
104
	private function initialiserProjet() {
104
	private function initialiserProjet() {
105
		$this->chargerNomDuProjet();
105
		$this->chargerNomDuProjet();
106
		$this->chargerConfigProjet();
106
		$this->chargerConfigProjet();
107
 
107
 
108
		// php5.3 : Enregistrement en première position des autoload de la méthode gérant les classes des services
108
		// php5.3 : Enregistrement en première position des autoload de la méthode gérant les classes des services
109
		if (phpversion() < 5.3) {
109
		if (phpversion() < 5.3) {
110
			spl_autoload_register(array($this, 'chargerClasseProjet'));
110
			spl_autoload_register(array($this, 'chargerClasseProjet'));
111
		} else {
111
		} else {
112
			spl_autoload_register(array($this, 'chargerClasseProjet'), true , true);
112
			spl_autoload_register(array($this, 'chargerClasseProjet'), true , true);
113
		}
113
		}
114
	}
114
	}
115
 
115
 
116
	private function chargerNomDuProjet() {
116
	private function chargerNomDuProjet() {
117
		$this->projetNom = $this->ressources[0];
117
		$this->projetNom = $this->ressources[0];
118
	}
118
	}
119
 
119
 
120
	private function chargerConfigProjet() {
120
	private function chargerConfigProjet() {
121
		$projet = $this->projetNom;
121
		$projet = $this->projetNom;
122
		$chemin = Config::get('chemin_configurations')."config_$projet.ini";
122
		$chemin = Config::get('chemin_configurations')."config_$projet.ini";
123
		Config::charger($chemin);
123
		Config::charger($chemin);
124
	}
124
	}
125
 
125
 
126
	/*
126
	/*
127
	  1) jusqu'à présent:
127
	  1) jusqu'à présent:
128
	  * le principe pour URL = a/b est: de charger
128
	  * le principe pour URL = a/b est: de charger
129
	  * require_once($chemin/a/ucfirst(c).php)
129
	  * require_once($chemin/a/ucfirst(c).php)
130
	  * new ucfirst(c); ucfirst(c)->consulter()
130
	  * new ucfirst(c); ucfirst(c)->consulter()
131
	  * sachant que ucfirst(c).php et la classe ucfirst(c) apparaîssent à de multiples emplacements (selon a)
131
	  * sachant que ucfirst(c).php et la classe ucfirst(c) apparaîssent à de multiples emplacements (selon a)
132
 
132
 
133
	  1") Beurk... (php-className conflicts en PHP 5.2)
133
	  1") Beurk... (php-className conflicts en PHP 5.2)
134
 
134
 
135
	  Ici nous faisons des cas particuliers pour Ontologies, mais en suivant ce principe, sont affectés:
135
	  Ici nous faisons des cas particuliers pour Ontologies, mais en suivant ce principe, sont affectés:
136
	  Images, Informations, InformationsTaxonsSup,
136
	  Images, Informations, InformationsTaxonsSup,
137
	  LegendeCartes, NomCommune, Noms, NomsVernaculaires, Projets, Statuts,
137
	  LegendeCartes, NomCommune, Noms, NomsVernaculaires, Projets, Statuts,
138
	  Taxons, TaxonsCartes, Textes, ZoneGeo
138
	  Taxons, TaxonsCartes, Textes, ZoneGeo
139
 
139
 
140
	  cf:
140
	  cf:
141
	  $ grep -r '^[cC]lass '|grep -F '.php:'|egrep -w " \($(grep -rh '^[cC]lass '|awk '{print $2}'|sort|uniq -d|tr "\n" '|')\) " \
141
	  $ grep -r '^[cC]lass '|grep -F '.php:'|egrep -w " \($(grep -rh '^[cC]lass '|awk '{print $2}'|sort|uniq -d|tr "\n" '|')\) " \
142
	  |sort -k2
142
	  |sort -k2
143
 
143
 
144
	  PS: "Using two class with the same name"
144
	  PS: "Using two class with the same name"
145
	  http://stackoverflow.com/questions/4555186/using-two-class-with-the-same-name
145
	  http://stackoverflow.com/questions/4555186/using-two-class-with-the-same-name
146
	  > Stop.
146
	  > Stop.
147
	  > Whatever you are doing is wrong. Backup. Re-evaluate what you are doing and why.
147
	  > Whatever you are doing is wrong. Backup. Re-evaluate what you are doing and why.
148
	*/
148
	*/
149
	private static function debusquerClasse($p, $s) {
149
	private static function debusquerClasse($p, $s) {
150
		if($s == 'ontologies') {
150
		if($s == 'ontologies') {
151
			switch($p) {
151
			switch($p) {
152
			case 'baseflor':
152
			case 'baseflor':
153
				return 'BaseFloreOntologies';
153
				return 'BaseFloreOntologies';
154
			case 'eflore':
154
			case 'eflore':
155
				return 'EfloreOntologies';
155
				return 'EfloreOntologies';
156
			case 'chorodep':
156
			case 'chorodep':
157
				return 'ChorodepOntologies';
157
				return 'ChorodepOntologies';
158
			case 'baseveg':
158
			case 'baseveg':
159
				return 'BasevegOntologies';
159
				return 'BasevegOntologies';
160
			case 'moissonnage':
160
			case 'moissonnage':
161
				return 'MoissonnageOntologies';
161
				return 'MoissonnageOntologies';
162
			case 'commun':
162
			case 'commun':
163
				return 'Ontologies';
163
				return 'Ontologies';
164
			}
164
			}
165
		}
165
		}
166
 
166
 
167
		if($s == 'cartes') {
167
		if($s == 'cartes') {
168
			switch($p) {
168
			switch($p) {
169
			case 'bdtxa':
169
			case 'bdtxa':
170
				return 'BdtxaCartes';
170
				return 'BdtxaCartes';
171
			case 'eflore':
171
			case 'eflore':
172
				return 'EfloreCartes';
172
				return 'EfloreCartes';
173
			case 'chorodep':
173
			case 'chorodep':
174
				return 'ChorodepCartes';
174
				return 'ChorodepCartes';
175
			case 'moissonnage':
175
			case 'moissonnage':
176
				return 'MoissonnageCartes';
176
				return 'MoissonnageCartes';
-
 
177
			case 'sophy':
-
 
178
				return 'SophyCartes';
177
			}
179
			}
178
		}
180
		}
179
 
181
 
180
		return NULL;
182
		return NULL;
181
	}
183
	}
182
 
184
 
183
	private function chargerClasseProjet($classe) {
185
	private function chargerClasseProjet($classe) {
184
		if (class_exists($classe)) {
186
		if (class_exists($classe)) {
185
			return null;
187
			return null;
186
		}
188
		}
187
 
189
 
188
		if($this->serviceNom == 'ontologies') {
190
		if($this->serviceNom == 'ontologies') {
189
			$c = NULL;
191
			$c = NULL;
190
			switch($this->projetNom) {
192
			switch($this->projetNom) {
191
			case 'baseflor':
193
			case 'baseflor':
192
				$c = 'BaseFloreOntologies';
194
				$c = 'BaseFloreOntologies';
193
				break;
195
				break;
194
			case 'eflore':
196
			case 'eflore':
195
				$c = 'EfloreOntologies';
197
				$c = 'EfloreOntologies';
196
				break;
198
				break;
197
			case 'chorodep':
199
			case 'chorodep':
198
				$c = 'ChorodepOntologies';
200
				$c = 'ChorodepOntologies';
199
				break;
201
				break;
200
			case 'baseveg':
202
			case 'baseveg':
201
				$c = 'BasevegOntologies';
203
				$c = 'BasevegOntologies';
202
				break;
204
				break;
203
			case 'moissonnage':
205
			case 'moissonnage':
204
				$c = 'MoissonnageOntologies';
206
				$c = 'MoissonnageOntologies';
205
				break;
207
				break;
206
			case 'commun':
208
			case 'commun':
207
				$c = 'Ontologies';
209
				$c = 'Ontologies';
208
				break;
210
				break;
209
			}
211
			}
210
			if($c) {
212
			if($c) {
211
				require_once($this->cheminCourrant . 'commun' . DS . 'Commun.php');
213
				require_once($this->cheminCourrant . 'commun' . DS . 'Commun.php');
212
				require_once($this->cheminCourrant . $this->projetNom . DS . $this->obtenirNomClasseService($this->serviceNom) . '.php');
214
				require_once($this->cheminCourrant . $this->projetNom . DS . $this->obtenirNomClasseService($this->serviceNom) . '.php');
213
				return;
215
				return;
214
			}
216
			}
215
		}
217
		}
216
 
218
 
217
		// problème de class-name conflict. Exemple:
219
		// problème de class-name conflict. Exemple:
218
		// phpunit --verbose --debug --filter 'ChorodepCartesTest::testCarteGenerique|EfloreCartesTest::testCarteGenerale'
220
		// phpunit --verbose --debug --filter 'ChorodepCartesTest::testCarteGenerique|EfloreCartesTest::testCarteGenerale'
219
		if($this->serviceNom == 'cartes') {
221
		if($this->serviceNom == 'cartes') {
220
			$c = NULL;
222
			$c = NULL;
221
			switch($this->projetNom) {
223
			switch($this->projetNom) {
222
			case 'bdtxa':
224
			case 'bdtxa':
223
				$c = 'BdtxaCartes';
225
				$c = 'BdtxaCartes';
224
				break;
226
				break;
225
			case 'eflore':
227
			case 'eflore':
226
				$c = 'EfloreCartes';
228
				$c = 'EfloreCartes';
227
				break;
229
				break;
228
			case 'chorodep':
230
			case 'chorodep':
229
				$c = 'ChorodepCartes';
231
				$c = 'ChorodepCartes';
230
				break;
232
				break;
231
			case 'moissonnage':
233
			case 'moissonnage':
232
				$c = 'MoissonnageCartes';
234
				$c = 'MoissonnageCartes';
233
				break;
235
				break;
-
 
236
			case 'sophy':
-
 
237
				$c = 'SophyCartes';
-
 
238
				break;
234
			}
239
			}
235
			if($c) {
240
			if($c) {
236
				require_once($this->cheminCourrant . 'commun' . DS . 'Commun.php');
241
				require_once($this->cheminCourrant . 'commun' . DS . 'Commun.php');
237
				require_once($this->cheminCourrant . $this->projetNom . DS . $this->obtenirNomClasseService($this->serviceNom) . '.php');
242
				require_once($this->cheminCourrant . $this->projetNom . DS . $this->obtenirNomClasseService($this->serviceNom) . '.php');
238
				return;
243
				return;
239
			}
244
			}
240
		}
245
		}
241
 
246
 
242
		$cheminBiblio = Config::get('chemin_bibliotheque');
247
		$cheminBiblio = Config::get('chemin_bibliotheque');
243
		$chemins = array();
248
		$chemins = array();
244
		$chemins[] = $this->cheminCourrant.$this->projetNom.DS;
249
		$chemins[] = $this->cheminCourrant.$this->projetNom.DS;
245
		$chemins[] = $this->cheminCourrant.'commun'.DS;
250
		$chemins[] = $this->cheminCourrant.'commun'.DS;
246
		$chemins[] = $cheminBiblio;
251
		$chemins[] = $cheminBiblio;
247
		$chemins[] = $cheminBiblio.'robots'.DS;
252
		$chemins[] = $cheminBiblio.'robots'.DS;
248
 
253
 
249
		foreach ($chemins as $chemin) {
254
		foreach ($chemins as $chemin) {
250
			$chemin = $chemin.$classe.'.php';
255
			$chemin = $chemin.$classe.'.php';
251
			if (file_exists($chemin)) {
256
			if (file_exists($chemin)) {
252
				require_once $chemin;
257
				require_once $chemin;
253
				break;
258
				break;
254
			}
259
			}
255
		}
260
		}
256
	}
261
	}
257
 
262
 
258
	private function avoirRessourceService() {
263
	private function avoirRessourceService() {
259
		$presenceRessourceService = false;
264
		$presenceRessourceService = false;
260
		$servicesDispo = Outils::recupererTableauConfig('servicesDispo');
265
		$servicesDispo = Outils::recupererTableauConfig('servicesDispo');
261
		if (isset($this->ressources[1])) {
266
		if (isset($this->ressources[1])) {
262
			$service = $this->ressources[1];
267
			$service = $this->ressources[1];
263
			if (in_array($service, $servicesDispo)) {
268
			if (in_array($service, $servicesDispo)) {
264
				$presenceRessourceService = true;
269
				$presenceRessourceService = true;
265
			} else {
270
			} else {
266
				$message = "Le service demandé '$service' n'est pas disponible pour le projet {$this->projetNom} !\n".
271
				$message = "Le service demandé '$service' n'est pas disponible pour le projet {$this->projetNom} !\n".
267
					"Les services disponibles sont : ".implode(', ', $servicesDispo);
272
					"Les services disponibles sont : ".implode(', ', $servicesDispo);
268
				$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
273
				$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
269
				throw new Exception($message, $code);
274
				throw new Exception($message, $code);
270
			}
275
			}
271
		} else {
276
		} else {
272
			$message = "Vous n'avez pas indiqué de service pour le projet {$this->projetNom} !\n".
277
			$message = "Vous n'avez pas indiqué de service pour le projet {$this->projetNom} !\n".
273
				"Les services disponibles sont : ".implode(', ', $servicesDispo);
278
				"Les services disponibles sont : ".implode(', ', $servicesDispo);
274
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
279
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
275
			throw new Exception($message, $code);
280
			throw new Exception($message, $code);
276
		}
281
		}
277
		return $presenceRessourceService;
282
		return $presenceRessourceService;
278
	}
283
	}
279
 
284
 
280
	private function initialiserService() {
285
	private function initialiserService() {
281
		if($this->classe) {
286
		if($this->classe) {
282
			$classe = $this->classe;
287
			$classe = $this->classe;
283
			$service = new $classe($this->getBdd());
288
			$service = new $classe($this->getBdd());
284
			return $service->consulter($this->filtrerRessourcesPourService(), $this->parametres, $this->getBdd());
289
			return $service->consulter($this->filtrerRessourcesPourService(), $this->parametres, $this->getBdd());
285
		}
290
		}
286
		$classe = $this->obtenirNomClasseService($this->serviceNom);
291
		$classe = $this->obtenirNomClasseService($this->serviceNom);
287
		$chemins = array();
292
		$chemins = array();
288
		$chemins[] = $this->cheminCourrant.$this->projetNom.DS.$classe.'.php';
293
		$chemins[] = $this->cheminCourrant.$this->projetNom.DS.$classe.'.php';
289
		$chemins[] = $this->cheminCourrant.'commun'.DS.$classe.'.php';
294
		$chemins[] = $this->cheminCourrant.'commun'.DS.$classe.'.php';
290
 
295
 
291
		$service = null;
296
		$service = null;
292
		foreach ($chemins as $chemin) {
297
		foreach ($chemins as $chemin) {
293
			if (file_exists($chemin)) {
298
			if (file_exists($chemin)) {
294
				$service = new $classe($this->getBdd());
299
				$service = new $classe($this->getBdd());
295
				// Affichage utile lors de PHPUnit pour détecter les conflits d'autoload de classes de même nom
300
				// Affichage utile lors de PHPUnit pour détecter les conflits d'autoload de classes de même nom
296
				// $reflector = new ReflectionClass($classe);
301
				// $reflector = new ReflectionClass($classe);
297
				// printf("===> Projets init classe '%s' depuis '%s', mais provenant de '%s'\n", $classe, $chemin, $reflector->getFileName());
302
				// printf("===> Projets init classe '%s' depuis '%s', mais provenant de '%s'\n", $classe, $chemin, $reflector->getFileName());
298
				$ressourcesPourService = $this->filtrerRessourcesPourService();
303
				$ressourcesPourService = $this->filtrerRessourcesPourService();
299
				return $service->consulter($ressourcesPourService, $this->parametres, $this->getBdd());
304
				return $service->consulter($ressourcesPourService, $this->parametres, $this->getBdd());
300
			}
305
			}
301
		}
306
		}
302
		if (is_null($service)) {
307
		if (is_null($service)) {
303
			$message = "Le service demandé '{$this->serviceNom}' n'existe pas dans le projet {$this->projetNom} !";
308
			$message = "Le service demandé '{$this->serviceNom}' n'existe pas dans le projet {$this->projetNom} !";
304
			$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
309
			$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
305
			throw new Exception($message, $code);
310
			throw new Exception($message, $code);
306
		}
311
		}
307
		return NULL;
312
		return NULL;
308
	}
313
	}
309
 
314
 
310
	private function chargerNomDuService() {
315
	private function chargerNomDuService() {
311
		$this->serviceNom = $this->ressources[1];
316
		$this->serviceNom = $this->ressources[1];
312
	}
317
	}
313
 
318
 
314
	private function obtenirNomClasseService($mot) {
319
	private function obtenirNomClasseService($mot) {
315
		return str_replace(' ', '', ucwords(strtolower(str_replace('-', ' ', $mot))));
320
		return str_replace(' ', '', ucwords(strtolower(str_replace('-', ' ', $mot))));
316
	}
321
	}
317
 
322
 
318
	private function filtrerRessourcesPourService() {
323
	private function filtrerRessourcesPourService() {
319
		$ressourcesPourService = array();
324
		$ressourcesPourService = array();
320
		$nbreDeRessources = count($this->ressources);
325
		$nbreDeRessources = count($this->ressources);
321
		for ($i = 2; $i < $nbreDeRessources; $i++) {
326
		for ($i = 2; $i < $nbreDeRessources; $i++) {
322
			$ressourcesPourService[] = $this->ressources[$i];
327
			$ressourcesPourService[] = $this->ressources[$i];
323
		}
328
		}
324
		return $ressourcesPourService;
329
		return $ressourcesPourService;
325
	}
330
	}
326
}
331
}
327
?>
332
?>