O:39:"phpDocumentor\Descriptor\FileDescriptor":21:{s:7:" * hash";s:32:"05c14562fc939c154dbd4f56f87b1f08";s:7:" * path";s:15:"RestServeur.php";s:9:" * source";s:26723:"<?php
// declare(encoding='UTF-8');
/**
 * Classe principale gérant les services web de type (@link(REST, http://fr.wikipedia.org/wiki/Rest).
 *
 * Elle contient  :
 *  - les constantes indiquant les différentes (@link(méthode HTTP, http://fr.wikipedia.org/wiki/Http) prises en compte.
 *  - les @link(codes HTTP des réponses, http://fr.wikipedia.org/wiki/Liste_des_codes_HTTP)
 *
 * Ce serveur REST accepte 4 types de méthodes HTTP : GET, PUT, POST, DELETE.
 * GET et POST ne pose généralement pas de problème pour les clients HTTP mais ce n'est pas forcément le cas pour PUT et DELETE.
 * Vous pouvez donc pour réaliser :
 *  - DELETE : utiliser la méthode POST avec action=DELETE dans le corps de la requête.
 *  - PUT : utiliser la méthode POST avec une url ne contenant aucune indication de ressource.
 * Une autre solution consiste à utiliser n'importe quelle méthode et à ajouter l'entête "X_HTTP_METHOD_OVERRIDE" avec pour
 * valeur le nom de la méthode que vous souhaitez utiliser. Exemple d'entête : "X_HTTP_METHOD_OVERRIDE: PUT".
 * Exemple : <code>curl -v -v -H "X_HTTP_METHOD_OVERRIDE: DELETE" "http://www.mondomaine.org/services/apiVersion/[mon-service]/"</code>
 * Cela fonctionne avec Apache.
 *
 * Les classes des services web doivent avoir un nom au format ChatMot "MonService" et être appelée dans l'url par le même nom
 * en minuscule où les mots sont séparés par des tirets "mon-service".
 *
 * Paramètres liés dans config.ini :
 *  - serveur.baseURL : morceau de l'url pour appeler le serveur relative au domaine. Exemple : pour http://www.tela-botanica.org/mon_serveur/
 *  	mettre : "/mon_serveur/"
 *  - serveur.baseAlternativeURL : sur le même principe que ci-dessus permet d'affecter une deuxième url (pour gérer des raccourci via htaccess)
 *
 * Encodage en entrée : utf8
 * Encodage en sortie : utf8
 *
 * @category	Php 5.2
 * @package		Framework
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @copyright	Copyright (c) 2010, Tela Botanica (accueil@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>
 * @since 		0.3
 * @version		$Id: RestServeur.php 421 2013-04-11 14:43:49Z jpm $
 * @link		/doc/framework/
 */
// TODO : gerer les retours : dans ce controleur : code retour et envoi ...
class RestServeur {

	/** Nom de la méthode appelée dans un service pour éxécuter une requête de type GET. */
	const METHODE_GET = 'consulter';

	/** Nom de la méthode appelée dans un service pour éxécuter une requête de type POST. */
	const METHODE_POST = 'modifier';

	/** Nom de la méthode appelée dans un service pour éxécuter une requête de type DELETE. */
	const METHODE_DELETE = 'supprimer';

	/** Nom de la méthode appelée dans un service pour éxécuter une requête de type PUT. */
	const METHODE_PUT = 'ajouter';

	/** Code HTTP 200 indiquant le succès de l'accès à un service web par la méthode GET.
	 * L'utiliser lors d'une requète de type GET (consulter) pour indiquer le succès de l'opération.
	 * Sera renvoyée par défaut par PHP. */
	const HTTP_CODE_OK = '200';

	/** Code HTTP 201 indiquant que l'accès à un service web est un succès et que la ressource a été créée ou modifié.
	 * L'utiliser lors d'une requète de type PUT (ajouter) ou POST (modifier) pour indiquer le succès de l'opération. */
	const HTTP_CODE_CREATION_OK = '201';

	/** Code HTTP 204 indique que l'accès à un service web est un succès et qu'il n'y a pas de contenu à renvoyer.
	 * L'utiliser lors d'une requète de type DELETE (supprimer) pour indiquer le succès de l'opération si aucun
	 * contenu (status) ne doit être renvoyé, sinon utiliser 200 OK. */
	const HTTP_CODE_SUPPRESSION_OK = '204';

	/** Code HTTP 400 indique que les paramètres envoyés au service contiennent des erreurs.
	 * L'utiliser pour indiquer l'échec de l'accès au service. La réponse pourra contenir un message expliquant la source
	 * de l'erreur. */
	const HTTP_CODE_MAUVAISE_REQUETE = '400';

	/** Code HTTP 401 indiquant que l'accès à un service web est refusé car l'authentification (obligatoire) a échoué pour
	 * accéder à la ressource. */
	const HTTP_CODE_ACCES_NON_AUTORISE = '401';

	/** Code HTTP 404 indiquant que la ressource indiquée par l'url est introuvable. */
	const HTTP_CODE_RESSOURCE_INTROUVABLE = '404';

	/** Code HTTP 405 indiquant soit :
	 *  - que le service web ne possède pas d'accès la ressource correspondant à la méthode HTTP employée.
	 *  - que la méthode HTTP enployée n'est pas en accord avec la ressource indiquée par l'url. */
	const HTTP_CODE_METHODE_NON_AUTORISE = '405';

	/** Code d'erreur HTTP 409 indiquant qu'un conflit est survenu vis à vis de la ressource.
	 * Par exemple, essayer de créer deux fois la même ressource ou bien tenter de modifier une ressource qui a été modifiée par
	 * ailleurs. */
	const HTTP_CODE_CONFLIT = '409';

	/** Code HTTP 411 indiquant que des paramètres passés dans le contenu de la requête sont nécessaires au service. */
	const HTTP_CODE_CONTENU_REQUIS = '411';

	/** Code d'erreur HTTP 500 Internal Server Error.
	 * L'utiliser quand le serveur ou un service soulève une erreur ou une exception. */
	const HTTP_CODE_ERREUR = '500';

	/** Motif de l'epression régulière vérfiant la version de l'API. */
	const MOTIF_API_VERSION = '/^[0-9]+(?:[.][0-9]+)*$/';

	/** Motif de l'epression régulière vérfiant le nom du service. */
	const MOTIF_SERVICE_NOM = '/^[a-z0-9]+(?:[-][a-z0-9]+)*$/';

	/** Mettre à true pour activer l'affichage des messages d'erreurs et de débogage.
	 * @var boolean */
	private static $debogageActivation = false;

	/** Indiquer le mode de débogage à utiliser (@see Debug).
	 * @var string */
	private static $debogageMode = '';

	/** La méthode de la requête HTTP utilisée.
	 * @var string */
	private $methode = 'GET';

	/** Le contenu brut du corps de la requête HTTP (s'il y en a).
	 * @var array */
	private $requeteDonnees = null;

	/** Le contenu sous forme de tableau de paires clés-valeurs du corps de la requête HTTP (s'il y en a).
	 * @var array */
	private $requeteDonneesParsees = null;

	/** Version de l'API demandée.
	 * Ex. http://www.mondomaine.org/services/[apiVersion]/mon-service/
	 * @var mixed Généralement deux nombres séparés par un point. Ex. : 1.0
	 */
	private $apiVersion = null;

	/** Nom du service demandé.
	 * Ex. http://www.mondomaine.org/services/apiVersion/[mon-service]/
	 * @var string par défaut vaut null.
	 */
	private $service = null;

	/** Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
	 * Ex. http://www.mondomaine.org/services/apiVersion/mon-service/[maRessource/maSousResource...]
	 * @var array
	 */
	private $ressources = array();

	/** Partie de l'url situé après le '?' servant à paramétrer le service demandé.
	 * Les données proviennent de $_GET où les caractères suivant ont été transformé en '_' undescrore dans les clés :
	 * - chr(32) ( ) (space)
	 * - chr(46) (.) (dot)
	 * - chr(91) ([) (open square bracket)
	 * - chr(128) - chr(159) (various)
	 * En outre nous appliquons la méthode nettoyerGet() qui effectue d'autres remplacement dans les valeurs.
	 * Ex. http://www.mondomaine.org/services/apiVersion/mon-service?monParametre1=maValeur1&monParametre2=maValeur2
	 * @see parametresBruts
	 * @var array
	 */
	private $parametres = array();

	/** Partie de l'url situé après le '?' servant à paramétrer le service demandé.
	 * Les données proviennent de $_SERVER['QUERY_STRING'] et n'ont subies aucune transformation au niveau des clés.
	 * Cependant nous appliquons la méthode nettoyerGet() qui effectue d'autres remplacement dans les valeurs.
	 * Ex. http://www.mondomaine.org/services/apiVersion/mon-service?monParametre1=maValeur1&monParametre2=maValeur2
	 * @see parametres
	 * @var array
	 */
	private $parametresBruts = array();

	/** Tableau contenant les paramètres de configuration du serveur.
	 * @var array
	 */
	private static $config = array();

	/** Tableau contenant les messages d'erreur et/ou d'avertissement du Serveur.
	 * @var array
	 * */
	private static $messages = array();

	/** Codes HTTP. */
	private static $http10 = array(
		self::HTTP_CODE_OK => 'OK',
		self::HTTP_CODE_CREATION_OK => 'Created',
		self::HTTP_CODE_SUPPRESSION_OK => 'No Content',
		self::HTTP_CODE_MAUVAISE_REQUETE => 'Bad Request',
		self::HTTP_CODE_ACCES_NON_AUTORISE => 'Unauthorized',
		self::HTTP_CODE_RESSOURCE_INTROUVABLE => 'Not Found',
		self::HTTP_CODE_METHODE_NON_AUTORISE => 'Method Not Allowed',
		self::HTTP_CODE_CONFLIT => 'Conflict',
		self::HTTP_CODE_CONTENU_REQUIS => 'Length Required',
		self::HTTP_CODE_ERREUR => 'Internal Server Error'
	);

	/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
	private $parametres_obligatoires = array('debogage', 'debogage_mode', 'serveur.baseURL', 'chemin_modules');

	/**
	 * Analyse les données envoyées au serveur, enregistre la méthode HTTP utilisée pour appeler le serveur et parse
	 * l'url appelée pour trouver le service demandé.
	 */
	public function __construct() {
		Config::verifierPresenceParametres($this->parametres_obligatoires);

		self::$debogageActivation = Config::get('debogage');
		self::$debogageMode = Config::get('debogage_mode');

		if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && isset($_SERVER['QUERY_STRING'])) {
			$this->initialiserMethode();
			$this->initialiserRequeteDonnees();

			$urlParts = $this->decouperUrlChemin();

			$this->initialiserApiVersion(array_shift($urlParts));
			$this->initialiserServiceNom(array_shift($urlParts));
			$this->initialiserRessource($urlParts);

			$this->initialiserParametres();
			// Enregistrement en première position des autoload de la méthode gérant les classes des services
			spl_autoload_register(array(get_class(), 'chargerClasse'));
		} else {
			self::envoyerEnteteStatutHttp(self::HTTP_CODE_ERREUR);
			$e = "La classe Serveur du TBFRamework nécessite, pour fonctionner, l'accès aux variables serveurs REQUEST_URI, REQUEST_METHOD et QUERY_STRING.";
			self::ajouterMessage($e);
		}
	}

	private function initialiserMethode() {
		if (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']) && count(trim($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])) > 0) {
			$this->methode = trim($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']);
		} else {
			$this->methode = $_SERVER['REQUEST_METHOD'];
		}
	}

	private function initialiserRequeteDonnees() {
		if (isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH'] > 0) {
			$this->requeteDonnees = '';
			$httpContent = fopen('php://input', 'r');
			while ($data = fread($httpContent, 1024)) {
				$this->requeteDonnees .= $data;
			}
			fclose($httpContent);
		}
	}

	private function decouperUrlChemin() {
		if (isset($_SERVER['REDIRECT_URL']) && $_SERVER['REDIRECT_URL'] != '') {
			if (isset($_SERVER['REDIRECT_QUERY_STRING']) && !empty($_SERVER['REDIRECT_QUERY_STRING'])) {
				$url = $_SERVER['REDIRECT_URL'].'?'.$_SERVER['REDIRECT_QUERY_STRING'];
			} else {
				$url = $_SERVER['REDIRECT_URL'];
			}
		} else {
			$url = $_SERVER['REQUEST_URI'];
		}

		if (strlen($_SERVER['QUERY_STRING']) == 0) {
			$tailleURL = strlen($url);
		} else {
			$tailleURL = -(strlen($_SERVER['QUERY_STRING']) + 1);
		}

		$urlChaine = '';
		if (strpos($url, Config::get('serveur.baseURL')) !== false) {
			$urlChaine = substr($url, strlen(Config::get('serveur.baseURL')), $tailleURL);
		} else if (strpos($url, Config::get('serveur.baseAlternativeURL')) !== false) {
			$urlChaine = substr($url, strlen(Config::get('serveur.baseAlternativeURL')), $tailleURL);
		}
		return explode('/', $urlChaine);
	}

	private function initialiserApiVersion($apiVersion) {
		if ($this->verifierApiVersion($apiVersion)) {
			$this->apiVersion = $apiVersion;
			self::$config['chemins']['api'] = Config::get('chemin_modules').$this->apiVersion.DS;
			self::$config['chemins']['api_bibliotheque'] = self::$config['chemins']['api'].Config::get('dossier_bibliotheque').DS;
		} else {
			self::envoyerEnteteStatutHttp(self::HTTP_CODE_MAUVAISE_REQUETE);
			$e = "Aucune version d'API n'a été spécifiée.\n".
				"La version doit respecter l'expression régulière suivante : ".self::MOTIF_API_VERSION.".\n".
			  	"L'url doit avoir la forme suivante : http://www.mondomaine.org/services/apiVersion/monService/";
			self::ajouterMessage($e);
			self::cloreAccesServeur();
		}
	}

	private function verifierApiVersion($apiVersion) {
		$apiOk = false;
		if (isset($apiVersion) && !empty($apiVersion) && preg_match(self::MOTIF_API_VERSION, $apiVersion)) {
			$apiOk = true;
		}
		return $apiOk;
	}

	private function initialiserServiceNom($serviceNom) {
		if ($this->verifierServiceNom($serviceNom)) {
			$this->service = $this->traiterNomService($serviceNom);
		} else {
			self::envoyerEnteteStatutHttp(self::HTTP_CODE_MAUVAISE_REQUETE);
			$e = "Aucune nom de service n'a été spécifié.\n".
				"La nom du service doit respecter l'expression régulière suivante : ".self::MOTIF_SERVICE_NOM.".\n".
			  	"L'url doit avoir la forme suivante : http://www.mondomaine.org/services/apiVersion/monService/";
			self::ajouterMessage($e);
			self::cloreAccesServeur();
		}
	}

	private function verifierServiceNom($serviceNom) {
		$serviceNomOk = false;
		if (isset($serviceNom) && !empty($serviceNom) && preg_match(self::MOTIF_SERVICE_NOM, $serviceNom)) {
			$serviceNomOk = true;
		}
		return $serviceNomOk;
	}

	private function traiterNomService($serviceNom) {
		return str_replace(' ', '', ucwords(str_replace('-', ' ', strtolower($serviceNom))));
	}

	private function initialiserRessource($urlParts) {
		if (is_array($urlParts) && count($urlParts) > 0) {
			foreach ($urlParts as $ressource) {
				// Ne pas utiliser empty() car valeur 0 acceptée
				if ($ressource != '') {
					$this->ressources[] = urldecode($ressource);
				}
			}
		}
	}

	private function initialiserParametres() {
		$this->parametres = $this->recupererParametresGet();
		$this->parametresBruts = $this->recupererParametresBruts();
	}

	private function recupererParametresGet() {
		$_GET = $this->nettoyerParametres($_GET);
		return $_GET;
	}

	private function nettoyerParametres(Array $parametres) {
		// Pas besoin d'utiliser urldecode car déjà fait par php pour les clés et valeur de $_GET
		if (isset($parametres) && count($parametres) > 0) {
			foreach ($parametres as $cle => $valeur) {
				// les quotes, guillements et points-virgules ont été retirés des caractères à vérifier car
				//ça n'a plus lieu d'être maintenant que l'on utilise protéger à peu près partout
				$verifier = array('NULL', "\\", "\x00", "\x1a");
				$parametres[$cle] = strip_tags(str_replace($verifier, '', $valeur));
			}
		}
		return $parametres;
	}

	private function recupererParametresBruts() {
		$parametres_bruts = array();
		if (!empty($_SERVER['QUERY_STRING'])) {
			$paires = explode('&', $_SERVER['QUERY_STRING']);
			foreach ($paires as $paire) {
				$nv = explode('=', $paire);
				$nom = urldecode($nv[0]);
				$valeur = urldecode($nv[1]);
				$parametres_bruts[$nom] = $valeur;
			}
			$parametres_bruts = $this->nettoyerParametres($parametres_bruts);
		}
		return $parametres_bruts;
	}

	/**
	* La méthode __autoload() charge dynamiquement les classes trouvées dans le code.
	* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.
	*
	*@param string le nom de la classe appelée.
	*@return void le fichier contenant la classe doit être inclu par la fonction.
	*/
	public static function chargerClasse($classe) {
		if (class_exists($classe)) {
			return null;
		}
		$chemins = array('', self::$config['chemins']['api'], self::$config['chemins']['api_bibliotheque']);
		foreach ($chemins as $chemin) {
			$chemin = $chemin.$classe.'.php';
			if (file_exists($chemin)) {
				require_once $chemin;
			}
		}
	}

	/**
	 * Execute la requête.
	 */
	public function executer() {
		$retour = '';
		switch ($this->methode) {
			case 'GET':
				$retour = $this->get();
				break;
			case 'POST':
				$retour = $this->post();// Retour pour l'alternative PUT
				break;
			case 'DELETE':
				$retour = $this->delete();
				break;
			case 'PUT':
				$retour = $this->put();
				break;
			// Autorise l'accès depuis des serveurs tiers
			case 'OPTIONS':
				/*header('Access-Control-Allow-Origin: *');
				header('Access-Control-Allow-Headers:origin, content-type');
				header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
				header('Access-Control-Allow-Content-Type: application/json');
				header('Access-Control-Max-Age: 3628800');
				header('Access-Control-Allow-Credentials: false');*/
				break;
			default :
				self::envoyerEnteteStatutHttp(self::HTTP_CODE_METHODE_NON_AUTORISE);
				header('Allow: GET, POST, DELETE, PUT');
				$e = "La méthode HTTP '{$this->methode}' n'est pas prise en compte par ce serveur REST.\n".
					"Consulter l'entête Allow pour connaître les méthodes autorisées.";
				self::ajouterMessage($e);
		}
		$this->cloreAccesServeur($retour);
	}

	/**
	 * Execute a GET request. A GET request fetches a list of resource when no resource name is given, a list of element
	 * when a resource name is given, or a resource element when a resource and resource unique identifier are given. It does not change the
	 * database contents.
	 */
	private function get() {
		$retour = '';
		if ($this->service != null) {
			$Service = new $this->service(self::$config);
			if (method_exists($Service, self::METHODE_GET)) {
				$methodeGet = self::METHODE_GET;
				$parametres = $Service->utiliserParametresBruts() ? $this->parametresBruts : $this->parametres;
				$retour = $Service->$methodeGet($this->ressources, $parametres);
			} else {
				self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
				$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_GET."' nécessaire ".
					"lors de l'appel du service via la méthode HTTP GET.";
				self::ajouterMessage($e);
			}
		}
		return $retour;
	}

	private function post() {
		$retour = '';
		$paires = $this->parserDonneesRequete();
		if (count($paires) != 0) {
			if (isset($paires['action']) && $paires['action'] == 'DELETE') {// Alternative à l'utilisation de DELETE
				$retour = $this->delete();
			} else if (count($this->ressources) == 0) {// Alternative à l'utilisation de PUT
				$retour = $this->put();
			} else {
				if ($this->service != null) {
					$Service = new $this->service(self::$config);
					if (method_exists($Service, self::METHODE_POST)) {
						$methodePost = self::METHODE_POST;
						$info = $Service->$methodePost($this->ressources, $paires);
						if ($info !== false) {
							$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
							$retour = $info;
						}
					} else {
						self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
						$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_POST."' nécessaire ".
							"lors de l'appel du service via la méthode HTTP GET.";
						self::ajouterMessage($e);
					}
				}
			}
		} else {
			$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CONTENU_REQUIS);
			$e = "Le service '{$this->service}' requiert de fournir le contenu à modifier dans le corps ".
				"de la requête avec la méthode HTTP POST.";
			self::ajouterMessage($e);
		}
		return $retour;
	}

	private function put() {
		$retour = '';
		$paires = $this->parserDonneesRequete();
		if (count($paires) != 0) {
			if ($this->service != null) {
				$Service = new $this->service(self::$config);
				if (method_exists($Service, self::METHODE_PUT)) {
					$methodePut = self::METHODE_PUT;
					$info = $Service->$methodePut($this->ressources, $paires);
					if ($info !== false) {
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CREATION_OK);
						$retour = $info;
					}
				} else {
					self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
					$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_PUT."' nécessaire ".
						"lors de l'appel du service via la méthode HTTP GET.";
					self::ajouterMessage($e);
				}
			}
		} else {
			$this->envoyerEnteteStatutHttp(self::HTTP_CODE_CONTENU_REQUIS);
			$e = "Il est nécessaire de fournir du contenu dans le corps de la requête pour créer une nouvelle ressource.";
			self::ajouterMessage($e);
		}
		return $retour;
	}

	private function delete() {
		$retour = '';
		if (count($this->ressources) != 0) {
			$paires = $this->parserDonneesRequete();
			if ($this->service != null) {
				$Service = new $this->service(self::$config);
				if (method_exists($Service, self::METHODE_DELETE)) {
					$methodeDelete = self::METHODE_DELETE;
					$info = $Service->$methodeDelete($this->ressources, $paires);
					if ($info === true) {
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_SUPPRESSION_OK);
					} else if ($info === false) {
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
						$e = "La ressource à supprimer est introuvable. Il se peut qu'elle ait été préalablement supprimé.";
						self::ajouterMessage($e);
					} else {
						$this->envoyerEnteteStatutHttp(self::HTTP_CODE_OK);
						$retour = $info;
					}
				} else {
					self::envoyerEnteteStatutHttp(self::HTTP_CODE_RESSOURCE_INTROUVABLE);
					$e = "Le service '{$this->service}' ne contient pas la méthode '".self::METHODE_DELETE."' nécessaire ".
						"lors de l'appel du service via la méthode HTTP GET.";
					self::ajouterMessage($e);
				}
			}
		} else {
			$this->envoyerEnteteStatutHttp(self::HTTP_CODE_MAUVAISE_REQUETE);
			$e = "Il est nécessaire d'indiquer dans l'url la ressource à supprimer.";
			self::ajouterMessage($e);
		}
		return $retour;
	}

	/**
	 * Parse les données contenu dans le corps de la requête HTTP (= POST) en :
	 *  - décodant les clés et valeurs.
	 *  - supprimant les espaces en début et fin des clés et des valeurs.
	 *
	 * @return array Tableau de paires clé et valeur.
	 */
	private function parserDonneesRequete() {
		$donnees = array();
		if ($this->requeteDonneesParsees != null) {
			$donnees = $this->requeteDonneesParsees;
		} else if ($this->requeteDonnees != null) {
			if (preg_match('/application\/json/', $_SERVER['CONTENT_TYPE'])) {
				$donnees = json_decode($this->requeteDonnees, true);
			} else {
				$paires = explode('&', $this->requeteDonnees);
				foreach ($paires as $paire) {
					list($cle, $valeur) = explode('=', $paire);
					$cle = (isset($cle)) ? trim(urldecode($cle)) : '';
					$valeur = (isset($valeur)) ? trim(urldecode($valeur)) : '';
					$donnees[$cle] = $valeur;
				}
			}
			$this->requeteDonneesParsees = $donnees;
		}
		return $donnees;
	}

	/**
	 * Envoyer un entête HTTP (version 1.0) de statut.
	 * Il remplacera systématiquement tout entête HTTP de statut précédement envoyé.
	 * @param int $code entier indiquant le code du statut de l'entête HTTP à envoyer.
	 */
	public static function envoyerEnteteStatutHttp($code) {
		if (isset(self::$http10[$code])) {
			$txt = self::$http10[$code];
			header("HTTP/1.0 $code $txt", true);
		}
	}

	/**
	 * Termine l'accès au serveur après envoir envoyer les messages.
	 */
	private static function cloreAccesServeur($retour = '') {
		// 	Gestion des exceptions et erreurs générées par les services
		$retour .= self::gererErreurs();

		// Envoie des messages d'erreur et d'avertissement du serveur
		$retour .= self::envoyerMessages();

		// Autorise l'accès depuis des serveurs tiers
		//header('Access-Control-Allow-Origin: *');

		// Envoie sur la sortie standard le contenu de la réponse HTTP
		print $retour;

		// Nous terminons le script
		exit(0);
	}

	/**
	 * Si des exceptions ou des erreurs sont soulevées par le serveur ou les services, elles sont gérées par cette méthode.
	 * Si nous avec des erreurs d'un type différent d'E_USER_NOTICE (réservé au débogage), elle sont renvoyées sur la sortie
	 * standard (via echo).
	 * Si seulement des erreurs de type E_USER_NOTICE, sont présentes, elle sont envoyées en fonction du contenu du paramètre de
	 * config "debogage_mode" :
	 *  - Debug::MODE_ECHO : les messages sont affichés en utilisant echo au moment où ils sont déclenchés dans le code.
	 *  - Debug::MODE_NOTICE : les message sont stockés par le gestionnaire d'exception sous forme d'erreur de type
	 *  E_USER_NOTICE et sont renvoyés sur la sortie standard à la fin de l'execution du programme (via echo).
	 *  - Debug::MODE_ENTETE_HTTP : les message sont stockés par le gestionnaire d'exception sous forme d'erreur de type
	 *  E_USER_NOTICE et sont renvoyés dans un entête HTTP (X_REST_DEBOGAGE_MESSAGES) à la fin de l'execution du programme.
	 *  - Autre valeur : les messages sont formatés puis retournés par la fonction de débogage (à vous de les afficher).
	 */
	public static function gererErreurs() {
		$retour = '';
		if (self::$debogageActivation && GestionnaireException::getExceptionsNbre() > 0) {

			$exceptionsTriees = GestionnaireException::getExceptionsTriees();
			reset($exceptionsTriees);
			$debogageSeulement = true;
			if (array_key_exists(E_USER_ERROR, $exceptionsTriees)) {
				self::envoyerEnteteStatutHttp(self::HTTP_CODE_ERREUR);
				$debogageSeulement = false;
			}

			$exceptionsFormatees = array();
			foreach ($exceptionsTriees as $exceptions) {
				foreach ($exceptions as $e) {
					if ($debogageSeulement && self::$debogageMode == Debug::MODE_ENTETE_HTTP) {
						$exceptionsFormatees[] = GestionnaireException::formaterExceptionDebug($e);
					} else {
						$retour = GestionnaireException::formaterExceptionXhtml($e);
					}
				}
			}

			if ($debogageSeulement && self::$debogageMode == Debug::MODE_ENTETE_HTTP) {
				header('X_REST_DEBOGAGE_MESSAGES: '.json_encode($exceptionsFormatees));
			}
		}
		return $retour;
	}


	/**
	 * Permet d'ajouter un message d'erreur ou d'avertissement qui sera envoyé au client.
	 * Le message doit être au format texte et en UTF-8.
	 * @param string $message le message à envoyer.
	 */
	public static function ajouterMessage($message) {
		if (isset($message) && !empty($message)) {
			self::$messages[] = $message;
		}
	}

	/**
	 * Envoie au client les éventuels messages d'erreur et d'avertissement du Serveur.
	 * Le format d'envoie est text/plain encodé en UTF-8.
	 */
	private static function envoyerMessages() {
		if (count(self::$messages) > 0) {
			header("Content-Type: text/plain; charset=utf-8");
			return implode("\n", self::$messages);
		}
	}
}
?>";s:19:" * namespaceAliases";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:11:" * includes";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:41:"phpDocumentor\Reflection\IncludeReflector":3:{s:7:" * node";O:27:"PHPParser_Node_Expr_Include":2:{s:11:" * subNodes";a:2:{s:4:"expr";O:28:"PHPParser_Node_Expr_Variable":2:{s:11:" * subNodes";a:1:{s:4:"name";s:6:"chemin";}s:13:" * attributes";a:2:{s:9:"startLine";i:379;s:7:"endLine";i:379;}}s:4:"type";i:4;}s:13:" * attributes";a:2:{s:9:"startLine";i:379;s:7:"endLine";i:379;}}s:23:" * default_package_name";s:0:"";s:10:" * context";O:41:"phpDocumentor\Reflection\DocBlock\Context":3:{s:12:" * namespace";s:0:"";s:20:" * namespace_aliases";a:0:{}s:7:" * lsen";s:0:"";}}}}s:12:" * constants";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:12:" * functions";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:10:" * classes";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:12:"\RestServeur";O:40:"phpDocumentor\Descriptor\ClassDescriptor":18:{s:9:" * parent";s:0:"";s:13:" * implements";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:11:" * abstract";b:0;s:8:" * final";b:0;s:12:" * constants";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:16:{s:11:"METHODE_GET";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:11:"'consulter'";s:8:" * fqsen";s:25:"\RestServeur::METHODE_GET";s:7:" * name";s:11:"METHODE_GET";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:85:"Nom de la méthode appelée dans un service pour éxécuter une requête de type GET.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:45;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:12:"METHODE_POST";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:10:"'modifier'";s:8:" * fqsen";s:26:"\RestServeur::METHODE_POST";s:7:" * name";s:12:"METHODE_POST";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:86:"Nom de la méthode appelée dans un service pour éxécuter une requête de type POST.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:48;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:14:"METHODE_DELETE";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:11:"'supprimer'";s:8:" * fqsen";s:28:"\RestServeur::METHODE_DELETE";s:7:" * name";s:14:"METHODE_DELETE";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:88:"Nom de la méthode appelée dans un service pour éxécuter une requête de type DELETE.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:51;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:11:"METHODE_PUT";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:9:"'ajouter'";s:8:" * fqsen";s:25:"\RestServeur::METHODE_PUT";s:7:" * name";s:11:"METHODE_PUT";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:85:"Nom de la méthode appelée dans un service pour éxécuter une requête de type PUT.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:54;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:12:"HTTP_CODE_OK";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:5:"'200'";s:8:" * fqsen";s:26:"\RestServeur::HTTP_CODE_OK";s:7:" * name";s:12:"HTTP_CODE_OK";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:85:"Code HTTP 200 indiquant le succès de l'accès à un service web par la méthode GET.";s:14:" * description";s:132:"L'utiliser lors d'une requète de type GET (consulter) pour indiquer le succès de l'opération.
Sera renvoyée par défaut par PHP.";s:17:" * fileDescriptor";N;s:7:" * line";i:59;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:21:"HTTP_CODE_CREATION_OK";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:5:"'201'";s:8:" * fqsen";s:35:"\RestServeur::HTTP_CODE_CREATION_OK";s:7:" * name";s:21:"HTTP_CODE_CREATION_OK";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:118:"Code HTTP 201 indiquant que l'accès à un service web est un succès et que la ressource a été créée ou modifié.";s:14:" * description";s:113:"L'utiliser lors d'une requète de type PUT (ajouter) ou POST (modifier) pour indiquer le succès de l'opération.";s:17:" * fileDescriptor";N;s:7:" * line";i:63;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:24:"HTTP_CODE_SUPPRESSION_OK";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:5:"'204'";s:8:" * fqsen";s:38:"\RestServeur::HTTP_CODE_SUPPRESSION_OK";s:7:" * name";s:24:"HTTP_CODE_SUPPRESSION_OK";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:110:"Code HTTP 204 indique que l'accès à un service web est un succès et qu'il n'y a pas de contenu à renvoyer.";s:14:" * description";s:171:"L'utiliser lors d'une requète de type DELETE (supprimer) pour indiquer le succès de l'opération si aucun
contenu (status) ne doit être renvoyé, sinon utiliser 200 OK.";s:17:" * fileDescriptor";N;s:7:" * line";i:68;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:26:"HTTP_CODE_MAUVAISE_REQUETE";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:5:"'400'";s:8:" * fqsen";s:40:"\RestServeur::HTTP_CODE_MAUVAISE_REQUETE";s:7:" * name";s:26:"HTTP_CODE_MAUVAISE_REQUETE";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:86:"Code HTTP 400 indique que les paramètres envoyés au service contiennent des erreurs.";s:14:" * description";s:130:"L'utiliser pour indiquer l'échec de l'accès au service. La réponse pourra contenir un message expliquant la source
de l'erreur.";s:17:" * fileDescriptor";N;s:7:" * line";i:73;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:28:"HTTP_CODE_ACCES_NON_AUTORISE";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:5:"'401'";s:8:" * fqsen";s:42:"\RestServeur::HTTP_CODE_ACCES_NON_AUTORISE";s:7:" * name";s:28:"HTTP_CODE_ACCES_NON_AUTORISE";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:145:"Code HTTP 401 indiquant que l'accès à un service web est refusé car l'authentification (obligatoire) a échoué pour
accéder à la ressource.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:77;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:31:"HTTP_CODE_RESSOURCE_INTROUVABLE";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:5:"'404'";s:8:" * fqsen";s:45:"\RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE";s:7:" * name";s:31:"HTTP_CODE_RESSOURCE_INTROUVABLE";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:77:"Code HTTP 404 indiquant que la ressource indiquée par l'url est introuvable.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:80;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:30:"HTTP_CODE_METHODE_NON_AUTORISE";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:5:"'405'";s:8:" * fqsen";s:44:"\RestServeur::HTTP_CODE_METHODE_NON_AUTORISE";s:7:" * name";s:30:"HTTP_CODE_METHODE_NON_AUTORISE";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:135:"Code HTTP 405 indiquant soit :
 - que le service web ne possède pas d'accès la ressource correspondant à la méthode HTTP employée.";s:14:" * description";s:91:"- que la méthode HTTP enployée n'est pas en accord avec la ressource indiquée par l'url.";s:17:" * fileDescriptor";N;s:7:" * line";i:85;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:17:"HTTP_CODE_CONFLIT";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:5:"'409'";s:8:" * fqsen";s:31:"\RestServeur::HTTP_CODE_CONFLIT";s:7:" * name";s:17:"HTTP_CODE_CONFLIT";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:86:"Code d'erreur HTTP 409 indiquant qu'un conflit est survenu vis à vis de la ressource.";s:14:" * description";s:136:"Par exemple, essayer de créer deux fois la même ressource ou bien tenter de modifier une ressource qui a été modifiée par
ailleurs.";s:17:" * fileDescriptor";N;s:7:" * line";i:90;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:24:"HTTP_CODE_CONTENU_REQUIS";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:5:"'411'";s:8:" * fqsen";s:38:"\RestServeur::HTTP_CODE_CONTENU_REQUIS";s:7:" * name";s:24:"HTTP_CODE_CONTENU_REQUIS";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:112:"Code HTTP 411 indiquant que des paramètres passés dans le contenu de la requête sont nécessaires au service.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:93;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:16:"HTTP_CODE_ERREUR";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:5:"'500'";s:8:" * fqsen";s:30:"\RestServeur::HTTP_CODE_ERREUR";s:7:" * name";s:16:"HTTP_CODE_ERREUR";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:45:"Code d'erreur HTTP 500 Internal Server Error.";s:14:" * description";s:79:"L'utiliser quand le serveur ou un service soulève une erreur ou une exception.";s:17:" * fileDescriptor";N;s:7:" * line";i:97;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:17:"MOTIF_API_VERSION";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:26:"'/^[0-9]+(?:[.][0-9]+)*$/'";s:8:" * fqsen";s:31:"\RestServeur::MOTIF_API_VERSION";s:7:" * name";s:17:"MOTIF_API_VERSION";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:63:"Motif de l'epression régulière vérfiant la version de l'API.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:100;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:17:"MOTIF_SERVICE_NOM";O:43:"phpDocumentor\Descriptor\ConstantDescriptor":13:{s:9:" * parent";r:33;s:8:" * types";N;s:8:" * value";s:32:"'/^[a-z0-9]+(?:[-][a-z0-9]+)*$/'";s:8:" * fqsen";s:31:"\RestServeur::MOTIF_SERVICE_NOM";s:7:" * name";s:17:"MOTIF_SERVICE_NOM";s:12:" * namespace";s:1:"\";s:10:" * package";s:0:"";s:10:" * summary";s:61:"Motif de l'epression régulière vérfiant le nom du service.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:103;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:13:" * properties";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:14:{s:18:"debogageActivation";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:5:"false";s:9:" * static";b:1;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:32:"\RestServeur::debogageActivation";s:7:" * name";s:18:"debogageActivation";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:79:"Mettre à true pour activer l'affichage des messages d'erreurs et de débogage.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:107;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:7:"boolean";}s:7:" * name";s:3:"var";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:12:"debogageMode";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:2:"''";s:9:" * static";b:1;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:26:"\RestServeur::debogageMode";s:7:" * name";s:12:"debogageMode";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:55:"Indiquer le mode de débogage à utiliser (@see Debug).";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:111;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:6:"string";}s:7:" * name";s:3:"var";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:7:"methode";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:5:"'GET'";s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:21:"\RestServeur::methode";s:7:" * name";s:7:"methode";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:42:"La méthode de la requête HTTP utilisée.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:115;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:6:"string";}s:7:" * name";s:3:"var";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:14:"requeteDonnees";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:4:"null";s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:28:"\RestServeur::requeteDonnees";s:7:" * name";s:14:"requeteDonnees";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:59:"Le contenu brut du corps de la requête HTTP (s'il y en a).";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:119;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:5:"array";}s:7:" * name";s:3:"var";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:21:"requeteDonneesParsees";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:4:"null";s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:35:"\RestServeur::requeteDonneesParsees";s:7:" * name";s:21:"requeteDonneesParsees";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:100:"Le contenu sous forme de tableau de paires clés-valeurs du corps de la requête HTTP (s'il y en a).";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:123;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:5:"array";}s:7:" * name";s:3:"var";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:10:"apiVersion";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:4:"null";s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:24:"\RestServeur::apiVersion";s:7:" * name";s:10:"apiVersion";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:27:"Version de l'API demandée.";s:14:" * description";s:64:"Ex. http://www.mondomaine.org/services/[apiVersion]/mon-service/";s:17:" * fileDescriptor";N;s:7:" * line";i:129;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:5:"mixed";}s:7:" * name";s:3:"var";s:14:" * description";s:61:"Généralement deux nombres séparés par un point. Ex. : 1.0";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:7:"service";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:4:"null";s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:21:"\RestServeur::service";s:7:" * name";s:7:"service";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:24:"Nom du service demandé.";s:14:" * description";s:64:"Ex. http://www.mondomaine.org/services/apiVersion/[mon-service]/";s:17:" * fileDescriptor";N;s:7:" * line";i:135;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:6:"string";}s:7:" * name";s:3:"var";s:14:" * description";s:22:"par défaut vaut null.";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:10:"ressources";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:7:"array()";s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:24:"\RestServeur::ressources";s:7:" * name";s:10:"ressources";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:87:"Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.";s:14:" * description";s:93:"Ex. http://www.mondomaine.org/services/apiVersion/mon-service/[maRessource/maSousResource...]";s:17:" * fileDescriptor";N;s:7:" * line";i:141;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:5:"array";}s:7:" * name";s:3:"var";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:10:"parametres";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:7:"array()";s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:24:"\RestServeur::parametres";s:7:" * name";s:10:"parametres";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:80:"Partie de l'url situé après le '?' servant à paramétrer le service demandé.";s:14:" * description";s:442:"Les données proviennent de $_GET où les caractères suivant ont été transformé en '_' undescrore dans les clés :
- chr(32) ( ) (space)
- chr(46) (.) (dot)
- chr(91) ([) (open square bracket)
- chr(128) - chr(159) (various)
En outre nous appliquons la méthode nettoyerGet() qui effectue d'autres remplacement dans les valeurs.
Ex. http://www.mondomaine.org/services/apiVersion/mon-service?monParametre1=maValeur1&monParametre2=maValeur2";s:17:" * fileDescriptor";N;s:7:" * line";i:154;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:3:"see";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:42:"phpDocumentor\Descriptor\Tag\SeeDescriptor":4:{s:12:" * reference";s:16:"\parametresBruts";s:7:" * name";s:3:"see";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:5:"array";}s:7:" * name";s:3:"var";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:15:"parametresBruts";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:7:"array()";s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:29:"\RestServeur::parametresBruts";s:7:" * name";s:15:"parametresBruts";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:80:"Partie de l'url situé après le '?' servant à paramétrer le service demandé.";s:14:" * description";s:326:"Les données proviennent de $_SERVER['QUERY_STRING'] et n'ont subies aucune transformation au niveau des clés.
Cependant nous appliquons la méthode nettoyerGet() qui effectue d'autres remplacement dans les valeurs.
Ex. http://www.mondomaine.org/services/apiVersion/mon-service?monParametre1=maValeur1&monParametre2=maValeur2";s:17:" * fileDescriptor";N;s:7:" * line";i:163;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:3:"see";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:42:"phpDocumentor\Descriptor\Tag\SeeDescriptor":4:{s:12:" * reference";s:11:"\parametres";s:7:" * name";s:3:"see";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:5:"array";}s:7:" * name";s:3:"var";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:6:"config";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:7:"array()";s:9:" * static";b:1;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:20:"\RestServeur::config";s:7:" * name";s:6:"config";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:62:"Tableau contenant les paramètres de configuration du serveur.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:168;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:5:"array";}s:7:" * name";s:3:"var";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:8:"messages";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:7:"array()";s:9:" * static";b:1;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:22:"\RestServeur::messages";s:7:" * name";s:8:"messages";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:73:"Tableau contenant les messages d'erreur et/ou d'avertissement du Serveur.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:173;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:5:"array";}s:7:" * name";s:3:"var";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:6:"http10";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:487:"array(self::HTTP_CODE_OK => 'OK', self::HTTP_CODE_CREATION_OK => 'Created', self::HTTP_CODE_SUPPRESSION_OK => 'No Content', self::HTTP_CODE_MAUVAISE_REQUETE => 'Bad Request', self::HTTP_CODE_ACCES_NON_AUTORISE => 'Unauthorized', self::HTTP_CODE_RESSOURCE_INTROUVABLE => 'Not Found', self::HTTP_CODE_METHODE_NON_AUTORISE => 'Method Not Allowed', self::HTTP_CODE_CONFLIT => 'Conflict', self::HTTP_CODE_CONTENU_REQUIS => 'Length Required', self::HTTP_CODE_ERREUR => 'Internal Server Error')";s:9:" * static";b:1;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:20:"\RestServeur::http10";s:7:" * name";s:6:"http10";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:11:"Codes HTTP.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:176;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:23:"parametres_obligatoires";O:43:"phpDocumentor\Descriptor\PropertyDescriptor":15:{s:9:" * parent";r:33;s:8:" * types";N;s:10:" * default";s:71:"array('debogage', 'debogage_mode', 'serveur.baseURL', 'chemin_modules')";s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:8:" * fqsen";s:37:"\RestServeur::parametres_obligatoires";s:7:" * name";s:23:"parametres_obligatoires";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:119:"Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:190;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:3:"var";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:10:" * methods";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:26:{s:11:"__construct";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:6:"public";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:27:"\RestServeur::__construct()";s:7:" * name";s:11:"__construct";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:162:"Analyse les données envoyées au serveur, enregistre la méthode HTTP utilisée pour appeler le serveur et parse
l'url appelée pour trouver le service demandé.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:196;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:18:"initialiserMethode";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:34:"\RestServeur::initialiserMethode()";s:7:" * name";s:18:"initialiserMethode";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:222;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:222;s:10:" * context";a:1:{i:0;s:20:"initialiserMethode()";}}}}}s:25:"initialiserRequeteDonnees";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:41:"\RestServeur::initialiserRequeteDonnees()";s:7:" * name";s:25:"initialiserRequeteDonnees";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:230;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:230;s:10:" * context";a:1:{i:0;s:27:"initialiserRequeteDonnees()";}}}}}s:17:"decouperUrlChemin";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:33:"\RestServeur::decouperUrlChemin()";s:7:" * name";s:17:"decouperUrlChemin";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:241;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:241;s:10:" * context";a:1:{i:0;s:19:"decouperUrlChemin()";}}}}}s:21:"initialiserApiVersion";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:11:"$apiVersion";O:43:"phpDocumentor\Descriptor\ArgumentDescriptor":13:{s:8:" * types";a:0:{}s:10:" * default";N;s:14:" * byReference";b:0;s:8:" * fqsen";s:0:"";s:7:" * name";s:11:"$apiVersion";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:8:" * fqsen";s:37:"\RestServeur::initialiserApiVersion()";s:7:" * name";s:21:"initialiserApiVersion";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:267;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:5:"param";a:0:{}s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50015";s:7:" * line";i:267;s:10:" * context";a:2:{i:0;s:11:"$apiVersion";i:1;s:23:"initialiserApiVersion()";}}i:1;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:267;s:10:" * context";a:1:{i:0;s:23:"initialiserApiVersion()";}}}}}s:18:"verifierApiVersion";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:11:"$apiVersion";O:43:"phpDocumentor\Descriptor\ArgumentDescriptor":13:{s:8:" * types";a:0:{}s:10:" * default";N;s:14:" * byReference";b:0;s:8:" * fqsen";s:0:"";s:7:" * name";s:11:"$apiVersion";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:8:" * fqsen";s:34:"\RestServeur::verifierApiVersion()";s:7:" * name";s:18:"verifierApiVersion";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:282;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:5:"param";a:0:{}s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50015";s:7:" * line";i:282;s:10:" * context";a:2:{i:0;s:11:"$apiVersion";i:1;s:20:"verifierApiVersion()";}}i:1;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:282;s:10:" * context";a:1:{i:0;s:20:"verifierApiVersion()";}}}}}s:21:"initialiserServiceNom";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:11:"$serviceNom";O:43:"phpDocumentor\Descriptor\ArgumentDescriptor":13:{s:8:" * types";a:0:{}s:10:" * default";N;s:14:" * byReference";b:0;s:8:" * fqsen";s:0:"";s:7:" * name";s:11:"$serviceNom";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:8:" * fqsen";s:37:"\RestServeur::initialiserServiceNom()";s:7:" * name";s:21:"initialiserServiceNom";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:290;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:5:"param";a:0:{}s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50015";s:7:" * line";i:290;s:10:" * context";a:2:{i:0;s:11:"$serviceNom";i:1;s:23:"initialiserServiceNom()";}}i:1;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:290;s:10:" * context";a:1:{i:0;s:23:"initialiserServiceNom()";}}}}}s:18:"verifierServiceNom";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:11:"$serviceNom";O:43:"phpDocumentor\Descriptor\ArgumentDescriptor":13:{s:8:" * types";a:0:{}s:10:" * default";N;s:14:" * byReference";b:0;s:8:" * fqsen";s:0:"";s:7:" * name";s:11:"$serviceNom";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:8:" * fqsen";s:34:"\RestServeur::verifierServiceNom()";s:7:" * name";s:18:"verifierServiceNom";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:303;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:5:"param";a:0:{}s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50015";s:7:" * line";i:303;s:10:" * context";a:2:{i:0;s:11:"$serviceNom";i:1;s:20:"verifierServiceNom()";}}i:1;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:303;s:10:" * context";a:1:{i:0;s:20:"verifierServiceNom()";}}}}}s:17:"traiterNomService";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:11:"$serviceNom";O:43:"phpDocumentor\Descriptor\ArgumentDescriptor":13:{s:8:" * types";a:0:{}s:10:" * default";N;s:14:" * byReference";b:0;s:8:" * fqsen";s:0:"";s:7:" * name";s:11:"$serviceNom";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:8:" * fqsen";s:33:"\RestServeur::traiterNomService()";s:7:" * name";s:17:"traiterNomService";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:311;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:5:"param";a:0:{}s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50015";s:7:" * line";i:311;s:10:" * context";a:2:{i:0;s:11:"$serviceNom";i:1;s:19:"traiterNomService()";}}i:1;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:311;s:10:" * context";a:1:{i:0;s:19:"traiterNomService()";}}}}}s:20:"initialiserRessource";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:9:"$urlParts";O:43:"phpDocumentor\Descriptor\ArgumentDescriptor":13:{s:8:" * types";a:0:{}s:10:" * default";N;s:14:" * byReference";b:0;s:8:" * fqsen";s:0:"";s:7:" * name";s:9:"$urlParts";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:8:" * fqsen";s:36:"\RestServeur::initialiserRessource()";s:7:" * name";s:20:"initialiserRessource";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:315;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:5:"param";a:0:{}s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50015";s:7:" * line";i:315;s:10:" * context";a:2:{i:0;s:9:"$urlParts";i:1;s:22:"initialiserRessource()";}}i:1;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:315;s:10:" * context";a:1:{i:0;s:22:"initialiserRessource()";}}}}}s:21:"initialiserParametres";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:37:"\RestServeur::initialiserParametres()";s:7:" * name";s:21:"initialiserParametres";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:326;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:326;s:10:" * context";a:1:{i:0;s:23:"initialiserParametres()";}}}}}s:22:"recupererParametresGet";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:38:"\RestServeur::recupererParametresGet()";s:7:" * name";s:22:"recupererParametresGet";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:331;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:331;s:10:" * context";a:1:{i:0;s:24:"recupererParametresGet()";}}}}}s:18:"nettoyerParametres";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:11:"$parametres";O:43:"phpDocumentor\Descriptor\ArgumentDescriptor":13:{s:8:" * types";a:1:{i:0;s:5:"array";}s:10:" * default";N;s:14:" * byReference";b:0;s:8:" * fqsen";s:0:"";s:7:" * name";s:11:"$parametres";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:8:" * fqsen";s:34:"\RestServeur::nettoyerParametres()";s:7:" * name";s:18:"nettoyerParametres";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:336;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:5:"param";a:0:{}s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:336;s:10:" * context";a:1:{i:0;s:20:"nettoyerParametres()";}}}}}s:24:"recupererParametresBruts";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:40:"\RestServeur::recupererParametresBruts()";s:7:" * name";s:24:"recupererParametresBruts";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:349;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:349;s:10:" * context";a:1:{i:0;s:26:"recupererParametresBruts()";}}}}}s:13:"chargerClasse";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:1;s:13:" * visibility";s:6:"public";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:7:"$classe";O:43:"phpDocumentor\Descriptor\ArgumentDescriptor":13:{s:8:" * types";a:0:{}s:10:" * default";N;s:14:" * byReference";b:0;s:8:" * fqsen";s:0:"";s:7:" * name";s:7:"$classe";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:8:" * fqsen";s:29:"\RestServeur::chargerClasse()";s:7:" * name";s:13:"chargerClasse";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:81:"La méthode __autoload() charge dynamiquement les classes trouvées dans le code.";s:14:" * description";s:94:"Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code.";s:17:" * fileDescriptor";N;s:7:" * line";i:371;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:0:"";s:8:" * types";a:1:{i:0;s:6:"string";}s:7:" * name";s:5:"param";s:14:" * description";s:29:"le nom de la classe appelée.";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:45:"phpDocumentor\Descriptor\Tag\ReturnDescriptor":4:{s:8:" * types";a:1:{i:0;s:4:"void";}s:7:" * name";s:6:"return";s:14:" * description";s:64:"le fichier contenant la classe doit être inclu par la fonction.";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50015";s:7:" * line";i:371;s:10:" * context";a:2:{i:0;s:7:"$classe";i:1;s:15:"chargerClasse()";}}}}}s:8:"executer";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:6:"public";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:24:"\RestServeur::executer()";s:7:" * name";s:8:"executer";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:20:"Execute la requête.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:387;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:3:"get";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:19:"\RestServeur::get()";s:7:" * name";s:3:"get";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:266:"Execute a GET request. A GET request fetches a list of resource when no resource name is given, a list of element
when a resource name is given, or a resource element when a resource and resource unique identifier are given. It does not change the
database contents.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:426;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:4:"post";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:20:"\RestServeur::post()";s:7:" * name";s:4:"post";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:444;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:444;s:10:" * context";a:1:{i:0;s:6:"post()";}}}}}s:3:"put";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:19:"\RestServeur::put()";s:7:" * name";s:3:"put";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:479;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:479;s:10:" * context";a:1:{i:0;s:5:"put()";}}}}}s:6:"delete";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:22:"\RestServeur::delete()";s:7:" * name";s:6:"delete";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:507;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50008";s:7:" * line";i:507;s:10:" * context";a:1:{i:0;s:8:"delete()";}}}}}s:20:"parserDonneesRequete";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:0;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:36:"\RestServeur::parserDonneesRequete()";s:7:" * name";s:20:"parserDonneesRequete";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:109:"Parse les données contenu dans le corps de la requête HTTP (= POST) en :
 - décodant les clés et valeurs.";s:14:" * description";s:67:"- supprimant les espaces en début et fin des clés et des valeurs.";s:17:" * fileDescriptor";N;s:7:" * line";i:548;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:45:"phpDocumentor\Descriptor\Tag\ReturnDescriptor":4:{s:8:" * types";a:1:{i:0;s:5:"array";}s:7:" * name";s:6:"return";s:14:" * description";s:33:"Tableau de paires clé et valeur.";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:23:"envoyerEnteteStatutHttp";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:1;s:13:" * visibility";s:6:"public";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:5:"$code";O:43:"phpDocumentor\Descriptor\ArgumentDescriptor":13:{s:8:" * types";a:1:{i:0;s:3:"int";}s:10:" * default";N;s:14:" * byReference";b:0;s:8:" * fqsen";s:0:"";s:7:" * name";s:5:"$code";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:64:"entier indiquant le code du statut de l'entête HTTP à envoyer.";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:8:" * fqsen";s:39:"\RestServeur::envoyerEnteteStatutHttp()";s:7:" * name";s:23:"envoyerEnteteStatutHttp";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:48:"Envoyer un entête HTTP (version 1.0) de statut.";s:14:" * description";s:82:"Il remplacera systématiquement tout entête HTTP de statut précédement envoyé.";s:17:" * fileDescriptor";N;s:7:" * line";i:574;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:5:"$code";s:8:" * types";a:1:{i:0;s:3:"int";}s:7:" * name";s:5:"param";s:14:" * description";s:64:"entier indiquant le code du statut de l'entête HTTP à envoyer.";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:17:"cloreAccesServeur";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:1;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:7:"$retour";O:43:"phpDocumentor\Descriptor\ArgumentDescriptor":13:{s:8:" * types";a:0:{}s:10:" * default";s:2:"''";s:14:" * byReference";b:0;s:8:" * fqsen";s:0:"";s:7:" * name";s:7:"$retour";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:8:" * fqsen";s:33:"\RestServeur::cloreAccesServeur()";s:7:" * name";s:17:"cloreAccesServeur";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:63:"Termine l'accès au serveur après envoir envoyer les messages.";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:584;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:5:"param";a:0:{}s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50015";s:7:" * line";i:584;s:10:" * context";a:2:{i:0;s:7:"$retour";i:1;s:19:"cloreAccesServeur()";}}}}}s:12:"gererErreurs";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:1;s:13:" * visibility";s:6:"public";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:28:"\RestServeur::gererErreurs()";s:7:" * name";s:12:"gererErreurs";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:120:"Si des exceptions ou des erreurs sont soulevées par le serveur ou les services, elles sont gérées par cette méthode.";s:14:" * description";s:980:"Si nous avec des erreurs d'un type différent d'E_USER_NOTICE (réservé au débogage), elle sont renvoyées sur la sortie
standard (via echo).
Si seulement des erreurs de type E_USER_NOTICE, sont présentes, elle sont envoyées en fonction du contenu du paramètre de
config "debogage_mode" :
 - Debug::MODE_ECHO : les messages sont affichés en utilisant echo au moment où ils sont déclenchés dans le code.
 - Debug::MODE_NOTICE : les message sont stockés par le gestionnaire d'exception sous forme d'erreur de type
 E_USER_NOTICE et sont renvoyés sur la sortie standard à la fin de l'execution du programme (via echo).
 - Debug::MODE_ENTETE_HTTP : les message sont stockés par le gestionnaire d'exception sous forme d'erreur de type
 E_USER_NOTICE et sont renvoyés dans un entête HTTP (X_REST_DEBOGAGE_MESSAGES) à la fin de l'execution du programme.
 - Autre valeur : les messages sont formatés puis retournés par la fonction de débogage (à vous de les afficher).";s:17:" * fileDescriptor";N;s:7:" * line";i:614;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:14:"ajouterMessage";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:1;s:13:" * visibility";s:6:"public";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{s:8:"$message";O:43:"phpDocumentor\Descriptor\ArgumentDescriptor":13:{s:8:" * types";a:1:{i:0;s:6:"string";}s:10:" * default";N;s:14:" * byReference";b:0;s:8:" * fqsen";s:0:"";s:7:" * name";s:8:"$message";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:0:"";s:14:" * description";s:22:"le message à envoyer.";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:8:" * fqsen";s:30:"\RestServeur::ajouterMessage()";s:7:" * name";s:14:"ajouterMessage";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:83:"Permet d'ajouter un message d'erreur ou d'avertissement qui sera envoyé au client.";s:14:" * description";s:50:"Le message doit être au format texte et en UTF-8.";s:17:" * fileDescriptor";N;s:7:" * line";i:650;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\ParamDescriptor":5:{s:15:" * variableName";s:8:"$message";s:8:" * types";a:1:{i:0;s:6:"string";}s:7:" * name";s:5:"param";s:14:" * description";s:22:"le message à envoyer.";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}s:15:"envoyerMessages";O:41:"phpDocumentor\Descriptor\MethodDescriptor":16:{s:9:" * parent";r:33;s:11:" * abstract";b:0;s:8:" * final";b:0;s:9:" * static";b:1;s:13:" * visibility";s:7:"private";s:12:" * arguments";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:31:"\RestServeur::envoyerMessages()";s:7:" * name";s:15:"envoyerMessages";s:12:" * namespace";N;s:10:" * package";s:0:"";s:10:" * summary";s:80:"Envoie au client les éventuels messages d'erreur et d'avertissement du Serveur.";s:14:" * description";s:51:"Le format d'envoie est text/plain encodé en UTF-8.";s:17:" * fileDescriptor";N;s:7:" * line";i:660;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:6:"return";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:5:"param";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:13:" * usedTraits";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:8:" * fqsen";s:12:"\RestServeur";s:7:" * name";s:11:"RestServeur";s:12:" * namespace";s:0:"";s:10:" * package";s:9:"Framework";s:10:" * summary";s:99:"Classe principale gérant les services web de type (@link(REST, http://fr.wikipedia.org/wiki/Rest).";s:14:" * description";s:1645:"Elle contient  :
 - les constantes indiquant les différentes (@link(méthode HTTP, http://fr.wikipedia.org/wiki/Http) prises en compte.
 - les @link(codes HTTP des réponses, http://fr.wikipedia.org/wiki/Liste_des_codes_HTTP)

Ce serveur REST accepte 4 types de méthodes HTTP : GET, PUT, POST, DELETE.
GET et POST ne pose généralement pas de problème pour les clients HTTP mais ce n'est pas forcément le cas pour PUT et DELETE.
Vous pouvez donc pour réaliser :
 - DELETE : utiliser la méthode POST avec action=DELETE dans le corps de la requête.
 - PUT : utiliser la méthode POST avec une url ne contenant aucune indication de ressource.
Une autre solution consiste à utiliser n'importe quelle méthode et à ajouter l'entête "X_HTTP_METHOD_OVERRIDE" avec pour
valeur le nom de la méthode que vous souhaitez utiliser. Exemple d'entête : "X_HTTP_METHOD_OVERRIDE: PUT".
Exemple : <code>curl -v -v -H "X_HTTP_METHOD_OVERRIDE: DELETE" "http://www.mondomaine.org/services/apiVersion/[mon-service]/"</code>
Cela fonctionne avec Apache.

Les classes des services web doivent avoir un nom au format ChatMot "MonService" et être appelée dans l'url par le même nom
en minuscule où les mots sont séparés par des tirets "mon-service".

Paramètres liés dans config.ini :
 - serveur.baseURL : morceau de l'url pour appeler le serveur relative au domaine. Exemple : pour http://www.tela-botanica.org/mon_serveur/
 	mettre : "/mon_serveur/"
 - serveur.baseAlternativeURL : sur le même principe que ci-dessus permet d'affecter une deuxième url (pour gérer des raccourci via htaccess)

Encodage en entrée : utf8
Encodage en sortie : utf8";s:17:" * fileDescriptor";r:1;s:7:" * line";i:42;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:9:{s:8:"category";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:38:"phpDocumentor\Descriptor\TagDescriptor":3:{s:7:" * name";s:8:"category";s:14:" * description";s:7:"Php 5.2";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:7:"package";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:38:"phpDocumentor\Descriptor\TagDescriptor":3:{s:7:" * name";s:7:"package";s:14:" * description";s:9:"Framework";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:6:"author";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:45:"phpDocumentor\Descriptor\Tag\AuthorDescriptor":3:{s:7:" * name";s:6:"author";s:14:" * description";s:43:"Jean-Pascal MILCENT <jpm@tela-botanica.org>";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:9:"copyright";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:38:"phpDocumentor\Descriptor\TagDescriptor":3:{s:7:" * name";s:9:"copyright";s:14:" * description";s:61:"Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:7:"license";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{i:0;O:38:"phpDocumentor\Descriptor\TagDescriptor":3:{s:7:" * name";s:7:"license";s:14:" * description";s:44:"GPL v3 <http://www.gnu.org/licenses/gpl.txt>";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}i:1;O:38:"phpDocumentor\Descriptor\TagDescriptor":3:{s:7:" * name";s:7:"license";s:14:" * description";s:68:"CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:5:"since";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:44:"phpDocumentor\Descriptor\Tag\SinceDescriptor":4:{s:10:" * version";s:3:"0.3";s:7:" * name";s:5:"since";s:14:" * description";s:0:"";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:7:"version";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:46:"phpDocumentor\Descriptor\Tag\VersionDescriptor":4:{s:10:" * version";s:0:"";s:7:" * name";s:7:"version";s:14:" * description";s:51:"$Id: RestServeur.php 421 2013-04-11 14:43:49Z jpm $";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:4:"link";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:43:"phpDocumentor\Descriptor\Tag\LinkDescriptor":4:{s:7:" * link";s:15:"/doc/framework/";s:7:" * name";s:4:"link";s:14:" * description";s:15:"/doc/framework/";s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:10:"subpackage";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}}s:13:" * interfaces";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:9:" * traits";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:10:" * markers";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;a:3:{s:4:"type";s:4:"TODO";s:7:"message";s:67:": gerer les retours : dans ce controleur : code retour et envoi ...";s:4:"line";i:41;}}}s:8:" * fqsen";s:0:"";s:7:" * name";s:15:"RestServeur.php";s:12:" * namespace";N;s:10:" * package";s:7:"Default";s:10:" * summary";s:0:"";s:14:" * description";s:0:"";s:17:" * fileDescriptor";N;s:7:" * line";i:0;s:7:" * tags";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:2:{s:7:"package";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}s:10:"subpackage";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:0:{}}}}s:9:" * errors";O:35:"phpDocumentor\Descriptor\Collection":1:{s:8:" * items";a:1:{i:0;O:40:"phpDocumentor\Descriptor\Validator\Error":4:{s:11:" * severity";s:5:"error";s:7:" * code";s:13:"PPC:ERR-50000";s:7:" * line";i:0;s:10:" * context";a:1:{i:0;s:0:"";}}}}}