Subversion Repositories Applications.framework

Rev

Rev 129 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
97 jpm 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
* @package Framework
9
* @category Debogage
10
// Auteur principal :
11
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
// Autres auteurs :
13
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
* @version $$Id$$
16
* @copyright 1999-2009 Tela Botanica (accueil@tela-botanica.org)
17
*/
18
class Debug {
19
 
20
	protected static $mode = null;
21
 
22
	public static function getMode() {
23
		if (self::$mode === null) {
24
			self::$mode = PHP_SAPI;
25
		}
26
		return self::$mode;
27
	}
28
 
29
	public static function dump($variable, $mot_cle = null, $echo = true) {
30
		// var_dump de la variable dans un buffer et récupération de la sortie
31
		ob_start();
32
		var_dump($variable);
33
		$sortie = ob_get_clean();
34
 
35
		// Pré-traitement de la sortie
36
		$sortie = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $sortie);
37
 
38
		// Traitement général du débogage
39
		return self::traiterDebogage($mot_cle, $sortie, $echo);
40
	}
41
 
42
	public static function printr($variable, $mot_cle = null, $echo = true) {
43
		// Récupération de la sortie
44
		$sortie = print_r($variable, true);
45
 
46
		// Traitement général du débogage
47
		return self::traiterDebogage($mot_cle, $sortie, $echo);
48
	}
49
 
50
	private static function traiterDebogage($mot_cle, $sortie, $echo) {
51
		// Formate le mot-clé
52
		$mot_cle = self::formaterMotCle($mot_cle);
53
 
54
		// Traitement de la sortie
55
		$sortie = self::traiterSortieSuivantMode($mot_cle, $sortie);
56
 
57
		// Affichage et/ou retour
58
		if ($echo) {
59
			echo $sortie;
60
			return null;
61
		} else {
62
			return $sortie;
63
		}
64
	}
65
 
66
	private static function formaterMotCle($mot_cle) {
67
		return ($mot_cle === null) ? '' : rtrim($mot_cle).' ';
68
	}
69
 
70
	private static function traiterSortieSuivantMode($mot_cle, $sortie) {
71
		$corps = $mot_cle.PHP_EOL.$sortie;
72
		if (self::getMode() == 'cli') {
73
			$sortie = PHP_EOL.$corps.PHP_EOL;
74
		} else {
75
			$sortie = '<pre>'.$corps.'</pre>';
76
		}
77
		return $sortie;
78
	}
79
}
80
?>