/trunk/framework/Debug.php |
---|
15,15 → 15,28 |
* @link /doc/framework/ |
*/ |
class Debug { |
/** Paramètrer le fichier de config avec "php:Debug::MODE_ECHO" : les messages sont affichés en utilisant echo au moment |
* où ils sont déclenchés dans le code.*/ |
const MODE_ECHO = 'echo'; |
/** Paramètrer le fichier de config avec "php: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).*/ |
const MODE_NOTICE = 'e_user_notice'; |
/** |
* mode de php (cli ou sapi) |
*/ |
/** Paramètrer le fichier de config avec "php: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. |
* Surtout utile pour le Serveur REST. */ |
const MODE_ENTETE_HTTP = 'entete_http'; |
/** Mode de php (cli ou sapi) */ |
protected static $mode = null; |
/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/ |
private static $parametres_obligatoires = array('fw_debogage', 'fw_debogage_mode'); |
/** |
* Accesseur pour le mode |
* @return string le mode de php |
124,19 → 137,19 |
* @return string la chaine de debogage formatée ou bien null si echo |
*/ |
private static function traiterDebogage($mot_cle, $sortie, $echo) { |
// Formate le mot-clé |
self::verifierParametresConfig(self::$parametres_obligatoires); |
$debogage = Config::get('fw_debogage'); |
$mode = Config::get('fw_debogage_mode'); |
$mot_cle = self::formaterMotCle($mot_cle); |
// Traitement de la sortie |
$sortie = self::traiterSortieSuivantMode($mot_cle, $sortie); |
// Affichage et/ou retour |
self::verifierParametresConfig(); |
if (Config::get('fw_debogage') == true) { |
if ($echo === true || Config::get('fw_debogage_mode') == self::MODE_ECHO) { |
if ($debogage == true) { |
if ($echo === true || $mode == self::MODE_ECHO) { |
echo $sortie; |
return null; |
} else if (Config::get('fw_debogage_mode') == self::MODE_NOTICE) { |
} else if ($mode == self::MODE_NOTICE || $mode == self::MODE_ENTETE_HTTP) { |
trigger_error($sortie, E_USER_NOTICE); |
return null; |
} else { |
173,15 → 186,17 |
/** |
* Vérifie que tous les paramêtres de config nécessaires au fonctionnement de cette classe existe dans les fichiers |
* de configurations. |
* |
* @param array $parametres talbeau des noms des paramètres de la config à verifier. |
* @return boolean true si tous les paramétres sont présents sinon false. |
*/ |
private static function verifierParametresConfig() { |
public static function verifierParametresConfig(Array $parametres) { |
$ok = true; |
$parametres = array('fw_debogage', 'fw_debogage_mode'); |
foreach ($parametres as $param) { |
if (is_null(Config::get($param))) { |
$classe = get_class(); |
$m = "L'utilisation de la classe $classe nécessite de définir '$param' dans un fichier de configuration."; |
trigger_error($m, E_USER_WARNING); |
trigger_error($m, E_USER_ERROR); |
$ok = false; |
} |
} |
/trunk/framework/Serveur.php |
---|
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)); |
} |
} |
} |
} |
/trunk/framework/Service.php |
---|
18,8 → 18,14 |
*/ |
abstract class Service { |
/** Objet de connection à la base de données. */ |
protected $bdd; |
public function __construct($config) { |
$this->config = $config; |
// Connection à la base de données |
$this->bdd = $this->connecterPDO(); |
} |
/** |
/trunk/framework/config.defaut.ini |
---|
21,7 → 21,11 |
; +------------------------------------------------------------------------------------------------------+ |
; Débogage |
; fw_debogage : Indique si oui ou non on veut afficher le débogage. |
; fw_debogage_mode : forme d'affichage des messages de débogage (Debug::MODE_ECHO ou Debug::MODE_NOTICE) |
; Indique sous quelle forme les méssages de débogage doivent s'afficher : |
; - "php:Debug::MODE_ECHO" : le message est affiché en utilisant echo |
; - "php:Debug::MODE_NOTICE" : le message est affiché en utilisant une erreur de type notice |
; - "php:Debug::MODE_ENTETE_HTTP" : les messages sont envoyés dans un entête HTTP "X_REST_DEBOGAGE". |
; - "Autre valeur" : les messages sont formatés puis retournés par la méthode de débogage utilisée. |
; fw_debogage_contexte : Indique si oui ou non on veut afficher le contexte de débogage. |
; fw_debogage_niveau : Niveau d'erreur à employer pour le code PHP. Voir le manuel de PHP pour les différents niveaux disponibles. |
; fw_benchmark_chrono : Indique si oui ou nom on veut afficher le tableau de chronométrage de l'application. (BENCHMARK) |