Overview

Packages

  • Framework
  • None
  • PHP
  • Utilitaire

Classes

  • Bdd
  • Cache
  • CacheSimple
  • Chronometre
  • Cli
  • Config
  • Controleur
  • Debug
  • Framework
  • GestionnaireException
  • I18n
  • Log
  • Registre
  • RestClient
  • RestServeur
  • RestService
  • Script
  • SquelettePhp
  • Url
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  1: <?php
  2: /**
  3:  * Classe principale gérant les services.
  4:  * Paramètres liés dans config.ini :
  5:  *  - serveur.baseURL
  6:  * 
  7:  * Encodage en entrée : utf8
  8:  * Encodage en sortie : utf8
  9:  * 
 10:  * @category    Php 5.2
 11:  * @package Framework
 12:  * @author      Jean-Pascal MILCENT <jpm@tela-botanica.org>
 13:  * @copyright   Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
 14:  * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
 15:  * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
 16:  * @since       0.3
 17:  * @version $Id: RestService.php 417 2012-05-15 09:24:12Z jpm $
 18:  * @link        /doc/framework/
 19:  */
 20: abstract class RestService {
 21:     
 22:     /** Objet de connection à la base de données. 
 23:      * @deprecated Utiliser la methode getBdd().
 24:      * @see getBdd()
 25:      */
 26:     protected $bdd = null;
 27:     
 28:     /** Objet Rest Client. */
 29:     private $RestClient = null;
 30:     
 31:     /** Indique si oui (true) ou non (false), on veut utiliser les paramètres brutes. */
 32:     protected $utilisationParametresBruts = false;
 33:     
 34:     public function __construct($config) {
 35:         $this->config = $config;
 36:         $this->bdd = new Bdd();
 37:     }
 38:     
 39:     public function initialiser() {
 40:         
 41:     }
 42:     
 43:     /** 
 44:      * Méthode de connection à la base de données sur demande.
 45:      * Tous les services web n'ont pas besoin de s'y connecter.
 46:      */
 47:     protected function getBdd() {
 48:         if (! isset($this->bdd)) {
 49:             $this->bdd = new Bdd();
 50:         }
 51:         return $this->bdd;
 52:     }
 53:     
 54:     /** 
 55:      * Méthode permettant de faire appel à un client REST en fonction des besoins du service.
 56:      */
 57:     protected function getRestClient() {
 58:         if (! isset($this->RestClient)) {
 59:             $this->RestClient = new RestClient();
 60:         }
 61:         return $this->RestClient;
 62:     }
 63:     
 64:     /** 
 65:      * Méthode permettant de savoir si le service veut utiliser des paramètres bruts (issu de la QueryString)
 66:      * ou pas (issu de $_GET).
 67:      */
 68:     public function utiliserParametresBruts() {
 69:         return $this->utilisationParametresBruts;
 70:     }
 71:     
 72:     /**
 73:      * Permet d'ajouter un message d'erreur ou d'avertissement qui sera envoyé au client.
 74:      * Le message doit être au format texte et en UTF-8.
 75:      * @param string $message le message à envoyer. 
 76:      */
 77:     protected function ajouterMessage($message) {
 78:         RestServeur::ajouterMessage($message);
 79:     }
 80:     
 81:     /**
 82:      * Méthode appelée lors d'une requête HTTP de type GET.
 83:      * 
 84:      * Si la consultation est un succès, le code statut HTTP retourné sera 200. Dans tous les autres cas,
 85:      * la méthode devra retourner le code statut HTTP adéquate.
 86:      * 
 87:      * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
 88:      * @param array Partie de l'url situé après le '?' servant à paramétrer le service demandé.
 89:      * @return string une chaine indiquant le succès de l'opération et les données demandées.
 90:      */
 91:     public function consulter($ressources, $parametres) {
 92:         RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
 93:         RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la consultation.");
 94:     }
 95:     
 96:     /**
 97:      * Méthode appelée lors d'une requête HTTP de type POST.
 98:      * 
 99:      * La ressource à modifier est indiquée via l'url. Les données devant servir à la mise à jours sont passées dans le corps
100:      * de la requête.
101:      * Si la modification est un succès, la méthode devra retourner "true" et le code statut HTTP retourné sera 201.
102:      * 
103:      * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
104:      * @param array les données transférées dans le corps de la requête devant servir à la modification.
105:      * @return mixed une chaine indiquant le succès de l'opération ou rien.
106:      */
107:     public function modifier($ressources, $requeteDonnees) {
108:         RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
109:         RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la modification.");
110:         return false;
111:     }
112:     
113:     /**
114:      * Méthode appelée lors d'une requête HTTP de type PUT.
115:      *
116:      * L'identifiant de la ressource à ajouter est indiqué via l'url si on le connait par avance. Sinon, il doit être créé par 
117:      * le service. Dans ce dernier cas, le nouvel identifiant devrait être renvoyé dans le corps de la réponse.
118:      * Si l'ajout est un succès, la méthode devra retourner "true" ou l'identifiant.
119:      * Le code statut HTTP retourné sera 201 en cas de succès.
120:      * Dans le cas contraire, la méthode devra retourner false.
121:      * 
122:      * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
123:      * @param array les données transférées dans le corps de la requête devant servir à l'ajout.
124:      * @return string l'identifiant créé.
125:      */
126:     public function ajouter($ressources, $requeteDonnees) {
127:         RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
128:         RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la création.");
129:         return false;
130:     }
131:     
132:     /**
133:      * Méthode appelée lors d'une requête HTTP de type DELETE (ou POST avec action=DELETE dans le corps de la requete).
134:      * 
135:      * Si la suppression est un succès, la méthode devra retourner "true" et le code statut HTTP retourné par
136:      * RestServeur sera 204.
137:      * Si la ressource à supprimer est introuvable, la méthode devra retourner "false" et le code statut HTTP
138:      * retourné par RestServeur sera 404.
139:      * Dans les autres cas de figure ou si vous souhaitez gérer vos propres codes de retour erreur, retourner
140:      * la valeur null ou rien.
141:      * 
142:      * @param array Morceaux de l'url servant à préciser la ressource concerné pour le service demandé.
143:      * @return mixed une chaine indiquant le succès de l'opération ou rien.
144:      */
145:     public function supprimer($ressources) {
146:         RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
147:         RestServeur::ajouterMessage("Le service '".get_class($this)."' n'autorise pas la suppression.");
148:         return null;
149:     }
150: }
151: ?>
API documentation generated by ApiGen 2.8.0