Overview

Packages

  • Framework
  • PHP

Classes

  • Application
  • Chronometre
  • Config
  • Controleur
  • Debug
  • GestionnaireException
  • I18n
  • Log
  • Modele
  • Registre
  • SquelettePhp
  • Url

Functions

  • autoloadAppliDefaut
  • autoloadFw
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  1: <?php
  2: // declare(encoding='UTF-8');
  3: /**
  4:  * Classe fournissant des fonctions de débogage équivalante à var_dump et print_r.
  5:  * L'affichage et l'utilisation de ces fonctions sont améliorés via cette classe.
  6:  * Cette classe est inspirée de la classe Zend_Debug.
  7:  *
  8:  * @category    PHP 5.2
  9:  * @package     Framework
 10:  * @author      Jean-Pascal MILCENT <jpm@tela-botanica.org>
 11:  * @copyright   Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
 12:  * @license     GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
 13:  * @license     CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
 14:  */
 15: class Debug {
 16: 
 17:     const MODE_ECHO = 'echo';
 18:     const MODE_NOTICE = 'e_user_notice';
 19: 
 20:     /**
 21:      * mode de php (cli ou sapi)
 22:      */
 23:     protected static $mode = null;
 24: 
 25:     /**
 26:      * Accesseur pour le mode
 27:      * @return string le mode de php
 28:      */
 29:     public static function getMode() {
 30:         if (self::$mode === null) {
 31:             self::$mode = PHP_SAPI;
 32:         }
 33:         return self::$mode;
 34:     }
 35: 
 36:     /**
 37:      * Equivalent de var_dump
 38:      * @param mixed $variable la variable à dumper
 39:      * @param string $mot_cle le mot cle à associer à la variable
 40:      * @param boolean $echo si true on affiche le résultat, si false on ne renvoie que la chaine sans l'afficher
 41:      * @return string la chaine à afficher representant le dump ou null si echo
 42:      */
 43:     public static function dump($variable, $mot_cle = null, $echo = false) {
 44:         // var_dump de la variable dans un buffer et récupération de la sortie
 45:         ob_start();
 46:         var_dump($variable);
 47:         $sortie = ob_get_clean();
 48: 
 49:         // Pré-traitement de la sortie
 50:         $sortie = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $sortie);
 51: 
 52:         // Traitement général du débogage
 53:         return self::traiterDebogage($mot_cle, $sortie, $echo);
 54:     }
 55: 
 56:     /**
 57:      * Equivalent de print_r.
 58:      * @param mixed $variable la variable à afficher
 59:      * @param string $mot_cle le mot cle à associer
 60:      * @param boolean $echo faire un echo ou non
 61:      * @return string la chaine contenant la variable printée ou null si echo
 62:      */
 63:     public static function printr($variable, $mot_cle = null, $echo = false) {
 64:         // Récupération de la sortie
 65:         $sortie = print_r($variable, true);
 66: 
 67:         // Traitement général du débogage
 68:         return self::traiterDebogage($mot_cle, $sortie, $echo);
 69:     }
 70: 
 71:     /**
 72:      * Traite une chaine de débogage et les mots clés associés
 73:      * @param string  $mot_cle le mot à associer à la chaine
 74:      * @param string  $sortie le chaine de debogage
 75:      * @param boolean $echo faire un echo du resultat ou non
 76:      * @return string la chaine de debogage formatée ou bien null si echo
 77:      */
 78:     private static function traiterDebogage($mot_cle, $sortie, $echo) {
 79:         // Formate le mot-clé
 80:         $mot_cle = self::formaterMotCle($mot_cle);
 81: 
 82:         // Traitement de la sortie
 83:         $sortie = self::traiterSortieSuivantMode($mot_cle, $sortie);
 84: 
 85:         // Affichage et/ou retour
 86:         self::verifierParametresConfig();
 87:         if (Config::get('fw_debogage') == true) {
 88:             if ($echo === true || Config::get('fw_debogage_mode') == self::MODE_ECHO) {
 89:                 echo $sortie;
 90:                 return null;
 91:             } else if (Config::get('fw_debogage_mode') == self::MODE_NOTICE) {
 92:                 trigger_error($sortie, E_USER_NOTICE);
 93:                 return null;
 94:             } else {
 95:                 return $sortie;
 96:             }
 97:         }
 98:     }
 99: 
100:     /**
101:      * formate un mot clé donné
102:      * @param string $mot_cle le mot clé à formaté
103:      * @return string le mot clé formaté ou bien un chaine vide le mot clé est null ou vide
104:      */
105:     private static function formaterMotCle($mot_cle) {
106:         return ($mot_cle === null) ? '' : rtrim($mot_cle).' ';
107:     }
108: 
109:     /**
110:      * traite la sortie de la chaine de débogage suivant le mode de php
111:      * @param string $mot_cle le mot clé associé à la chaine
112:      * @param string  $sortie la chaine de débogage
113:      * @return string la sortie formatée pour le mode en cours
114:      */
115:     private static function traiterSortieSuivantMode($mot_cle, $sortie) {
116:         $corps = $mot_cle.PHP_EOL.$sortie;
117:         if (self::getMode() == 'cli') {
118:             $sortie = PHP_EOL.$corps.PHP_EOL;
119:         } else {
120:             $sortie = '<pre>'.$corps.'</pre>';
121:         }
122:         return $sortie;
123:     }
124: 
125:     /**
126:      * Vérifie que tous les paramêtres de config nécessaires au fonctionnement de cette classe existe dans les fichiers
127:      * de configurations.
128:      */
129:     private static function verifierParametresConfig() {
130:         $ok = true;
131:         $parametres = array('fw_debogage', 'fw_debogage_mode');
132:         foreach ($parametres as $param) {
133:             if (is_null(Config::get($param))) {
134:                 $classe = get_class();
135:                 $m = "L'utilisation de la classe $classe nécessite de définir '$param' dans un fichier de configuration.";
136:                 trigger_error($m, E_USER_WARNING);
137:                 $ok = false;
138:             }
139:         }
140:         return $ok;
141:     }
142: }
143: ?>
TBFramework - v0.2 API documentation generated by ApiGen 2.8.0