Petite methode de debugg : print_rn
Par Nicolas SUPRIN, mardi 13 décembre 2005 à 08:41 | PHP | #2 | rss
Je l'ai piquée à Tatane, je ne pense pas qu'il m'en veuille.
Super pratique pour déboguer :) Je n'utilise que sa. http://www.tatane.com
Il suffit de lui passer en paramètres la variable à afficher (variables, tableaux, objets...) et elle s'occupe du reste.
Copiez collez ceci dans votre fichier de configuration, et vous pourrez l’appeler depuis tout les fichiers de votre application.
function print_rn($data, $B_echo = true) { ob_start(); var_dump($data); $c = ob_get_contents(); ob_end_clean(); $c = preg_replace("/\r\n|\r/", "\n", $c); $c = str_replace("]=>\n", '] = ', $c); $c = preg_replace('/= {2,}/', '= ', $c); $c = preg_replace("/\[\"(.*?)\"\] = /i", "[$1] = ", $c); $c = preg_replace('/ /', " ", $c); $c = preg_replace("/\"\"(.*?)\"/i", "\"$1\"", $c); $c = htmlspecialchars($c, ENT_NOQUOTES); // Expand numbers (ie. int(2) 10 => int(1) 2 10, float(6) 128.64 => float(1) 6 128.64 etc.) $c = preg_replace("/(int|float)\(([0-9\.]+)\)/ie", "'$1('.strlen('$2').') <span class=\"number\">$2</span>'", $c); // Syntax Highlighting of Strings. This seems cryptic, but it will also allow non-terminated strings to get parsed. $c = preg_replace("/(\[[\w ]+\] = string\([0-9]+\) )\"(.*?)/sim", "$1<span class=\"string\">\"", $c); $c = preg_replace("/(\"\n{1,})( {0,}\})/sim", "$1</span>$2", $c); $c = preg_replace("/(\"\n{1,})( {0,}\[)/sim", "$1</span>$2", $c); $c = preg_replace("/(string\([0-9]+\) )\"(.*?)\"\n/sim", "$1<span class=\"string\">\"$2\"</span>\n", $c); $regex = array( // Numberrs 'numbers' => array('/(^|] = )(array|float|int|string|resource|object\(.*\)|\&object\(.*\))\(([0-9\.]+)\)/i', '$1$2(<span class="number">$3</span>)'), // Keywords 'null' => array('/(^|] = )(null)/i', '$1<span class="keyword">$2</span>'), 'bool' => array('/(bool)\((true|false)\)/i', '$1(<span class="keyword">$2</span>)'), // Types 'types' => array('/(of type )\((.*)\)/i', '$1(<span class="type">$2</span>)'), // Objects 'object' => array('/(object|\&object)\(([\w]+)\)/i', '$1(<span class="object">$2</span>)'), // Function 'function' => array('/(^|] = )(array|string|int|float|bool|resource|object|\&object)\(/i', '$1<span class="function">$2</span>('), ); foreach ($regex as $x) { $c = preg_replace($x[0], $x[1], $c); } $style = ' /* outside div - it will float and match the screen */ .dumpr { margin: 2px; padding: 2px; background-color: #fbfbfb; float: left; clear: both; } /* font size and family */ .dumpr pre { color: #000000; font-size: 9pt; font-family: "Courier New",Courier,Monaco,monospace; margin: 0px; padding-top: 5px; padding-bottom: 7px; padding-left: 9px; padding-right: 9px; } /* inside div */ .dumpr div { background-color: #fcfcfc; border: 1px solid #d9d9d9; float: left; clear: both; } /* syntax highlighting */ .dumpr span.string {color: #c40000;} .dumpr span.number {color: #ff0000;} .dumpr span.keyword {color: #007200;} .dumpr span.function {color: #0000c4;} .dumpr span.object {color: #ac00ac;} .dumpr span.type {color: #0072c4;} .legenddumpr { background-color: #fcfcfc; border: 1px solid #d9d9d9; padding: 2px; } '; $style = preg_replace("/ {2,}/", "", $style); $style = preg_replace("/\t|\r\n|\r|\n/", "", $style); $style = preg_replace("/\/\*.*?\*\//i", '', $style); $style = str_replace('}', '} ', $style); $style = str_replace(' {', '{', $style); $style = trim($style); $c = trim($c); $c = preg_replace("/\n<\/span>/", "</span>\n", $c); $S_return = "<style type=\"text/css\">".$style."</style>\n"; $S_return .= '<fieldset class="dumpr">'; $S_return .= '<legend class="legenddumpr">'.basename($_SERVER['SCRIPT_FILENAME']).'</legend>'; //echo '<div>'; $S_return .= '<pre>'.$c.'</pre>'; //echo '</div>'; $S_return .= '</fieldset>'; $S_return .= "<div style=\"clear:both;\"> </div>"; if ($B_echo) { echo $S_return; } else { return $S_return; } }
L’appel est très simple :
<?php require_once 'globalconf.inc.php'; $A_tableau = array('tintin', 'tagada', 'tzointzoin'); print_rn($A_tableau); ?>
Ce qui donne comme résultat :
Voir aussi la méthode débogage dans un fichier.





Aucun commentaire pour le moment.
Aucun trackback.
Les trackbacks pour ce billet sont fermés.
Les commentaires pour ce billet sont fermés.