Jump to content

[ASTUCE] Afficher un tableau print_r de façon élégante


Recommended Posts

Si vous utilisez de façon régulière les var_dump et autres print_r, parfois je trouve leur affichage pas toujours très 'friendly'.

 

Je vous propose cette petite fonction:

/** Fonction d'affichage préformaté de variable non typée pour nos débuggages
* @param unknow $var : variable, tableau, objet... à afficher
* @param string $pIsSQL : True => Mode affichage SQL / String => Couleur du conteneur
* @param bool $pIsOpen : True => Conteneur déplié par défaut
* @return Code HTML d'un conteneur dépliable / repliable avec scrollbar auto
*/
function printr($var, $pIsSQL=false, $pIsOpen=true){
    $lColor = (is_string($pIsSQL)?$pIsSQL:($pIsSQL===true?'#FFF5DD':'#F2FFEE'));
    $pIsSQL = ($pIsSQL===true || $lColor=='#FEE');
    $var = ($pIsSQL===true?wordwrap($var.";\n", 100):$var);
    $lHeight = ($pIsSQL===true?'100px':'200px');
    $lUniqId = uniqid(md5(rand()));
    echo '<table cellspacing="0" cellpadding="0" style="width:100%;border:1px dashed gray;background-color:'.$lColor.';">
<tr><td><a style="display:block;padding:4px;" href="javascript:void(0);"
onClick="var tr = document.getElementById(\'printr_'.$lUniqId.'\');
if (tr.style.display!=\'none\') tr.style.display = \'none\';
else tr.style.display = \'table-row\';"><img
src="../img/sort_down.jpg" border="none" /></a></td></tr>
<tr style="display:'.($pIsOpen?'table-row':'none').';"
id="printr_'.$lUniqId.'"><td><textarea
style="padding:2 5px;width:100%;overflow:auto;height:'.$lHeight.';background-color:transparent;
border:none;border-top:1px dashed gray;font-size:11px;font-family:monospace;"
title="Affichage avec print_r() pour debug" '.($pIsSQL===true?' onFocus="select();"':'').'>';
    @print_r($var);
    echo '</textarea></td></tr></table>';
}

Copiez là à la fin de votre fichier config/config.inc.php

 

Vous pourrez ainsi l'appeler depuis n'importe quel script PHP.

 

Elle affiche le contenu de votre tableau de façon plus sympa et en plus vous avez un bouton vous permettant de la plier/déplier.

 

Voici  le résultat d'un printr($montableau) qui affiche le détail de montabelau:

capture.jpg

 

 

Plus sympa non ?

 

Rapide:

1. Copiez le code ci-dessus à la fin du fichier config/config.inc.php

. Copiez la petite image sort_down.jpg (en pièce jointe) à copier dans le répertoire /img depuis la racine de votre site.

En pièce jointe,une petite image sort_down.jpg à copier dans le répertoire /img depuis la racine de votre site.

post-64614-0-92872900-1384805706.jpg

Edited by franckm1000 (see edit history)
Link to comment
Share on other sites

Merci pour la contribution :)

 

Une question du coup pour le Prestashop, que penses-tu de pouvoir l'intégrer proprement pour plugger ça aux fonctions natives ppp() et ddd() ?

 

En tant que dev, j'avoue que personnaliser / coloriser / organiser plus facilement certaines choses (comme par exemple sur un objet faire un parsing des méthodes privées, des membres, etc) pourrait m'intéresser.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...