91,10 → 91,14 |
* L'utiliser quand le serveur ou un service soulève une erreur ou une exception. */ |
const HTTP_CODE_ERREUR = '500'; |
|
/** Les paramètres de configuration dynamiques internes au serveur. |
* @var array */ |
private static $config = array(); |
/** Mettre à true pour activer l'affichage des messages d'erreurs et de débogage. |
* @var boolean */ |
private $debogageActivation = false; |
|
/** Indiquer le mode de débogage à utiliser (@see Debug). |
* @var string */ |
private $debogageMode = ''; |
|
/** La méthode de la requête HTTP utilisée. |
* @var string */ |
private $methode = 'GET'; |
150,6 → 154,9 |
* l'url appelée pour trouver le service demandé. |
*/ |
public function __construct() { |
$this->debogageActivation = Config::get('fw_debogage'); |
$this->debogageMode = Config::get('fw_debogage_mode'); |
|
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && isset($_SERVER['QUERY_STRING'])) { |
$this->initialiserMethode(); |
$this->initialiserRequeteDonnees(); |
300,7 → 307,7 |
*/ |
private function get() { |
if ($this->service != null) { |
$Service = new $this->service(self::$config); |
$Service = new $this->service(); |
if (method_exists($Service, self::METHODE_GET)) { |
$methodeGet = self::METHODE_GET; |
$Service->$methodeGet($this->ressources, $this->parametres); |
322,7 → 329,7 |
$this->add(); |
} else { |
if ($this->service != null) { |
$Service = new $this->service(self::$config); |
$Service = new $this->service(); |
if (method_exists($Service, self::METHODE_POST)) { |
$methodePost = self::METHODE_POST; |
if ($Service->$methodePost($this->ressources, $paires)) { |
345,7 → 352,7 |
|
if (count($paires) != 0) { |
if ($this->service != null) { |
$Service = new $this->service(self::$config); |
$Service = new $this->service(); |
if (method_exists($Service, self::METHODE_PUT)) { |
$methodePut = self::METHODE_PUT; |
if ($Service->$methodePut($this->ressources, $paires)) { |
365,7 → 372,7 |
private function delete() { |
if (count($this->ressources) != 0) { |
if ($this->service != null) { |
$Service = new $this->service(self::$config); |
$Service = new $this->service(); |
if (method_exists($Service, self::METHODE_DELETE)) { |
$methodeDelete = self::METHODE_DELETE; |
if ($Service->$methodeDelete($this->ressources, $paires)) { |
421,20 → 428,42 |
} |
|
/** |
* 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 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 "fw_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() { |
if (Config::get('fw_debogage') && GestionnaireException::getExceptionsNbre() > 0) { |
if ($this->debogageActivation && GestionnaireException::getExceptionsNbre() > 0) { |
$exceptionsTriees = GestionnaireException::getExceptionsTriees(); |
reset($exceptionsTriees); |
$debogageSeulement = true; |
if (! (count($exceptionsTriees) == 1 && key($exceptionsTriees) == E_USER_NOTICE)) { |
self::envoyerEnteteStatutHttp(self::HTTP_CODE_ERREUR); |
$debogageSeulement = false; |
} |
|
$exceptionsFormatees = array(); |
foreach ($exceptionsTriees as $exceptions) { |
foreach ($exceptions as $e) { |
echo GestionnaireException::formaterExceptionXhtml($e); |
if ($debogageSeulement && $this->debogageMode == Debug::MODE_ENTETE_HTTP) { |
$exceptionsFormatees[] = GestionnaireException::formaterExceptionTxt($e); |
} else { |
echo GestionnaireException::formaterExceptionXhtml($e); |
} |
} |
} |
|
if ($debogageSeulement && $this->debogageMode == Debug::MODE_ENTETE_HTTP) { |
header('X_REST_DEBOGAGE_MESSAGES: '.json_encode($exceptionsFormatees)); |
} |
} |
} |
} |