0

PHP – Une fonction de debug perso

Bonjour les amis.

Aujourd’hui, je vais vous présenter une petite fonction de débogage.

A quoi ça sert ?

En tant que développeur, vous avez certainement dû être confronté à un moment ou à un autre à un problème de résultat qui ne donne pas ce que vous souhaitez. C’est pour cela que la notion même de debug, de mouchards dans le code est primordiale et indissociable d’un bon développement.

Pourquoi mon code plante-t-il à cet endroit? Pourquoi cette fonction ne me donne pas la bonne valeur ? Pourquoi ma requête ne me retourne pas les bons champs ? Pourquoi Nicolas Cage est encore considéré comme un acteur ?

Tant de questions dont les réponses vous seront apportées par un debug de vos données. (Sauf dans le cas de Nicolas Cage… Même les fonctions de debug les plus avancées n’ont pas encore trouvé de réponse à cette énigme…)

Si vous développez sous un framework lambda, vous devez être particulièrement adepte de ce concept. On appelle sa petite fonction debug et c’est parti pour une jolie présentation des données que vous souhaitez observer. J’imagine que la fonction de debug de votre framework vous suffira amplement, mais tout le monde ne développe pas sous Framework ou n’ai pas satisfait de l’outil de débogage fourni. C’est pourquoi, chez l’ami du développeur, on a codé une petite fonction de debug que chacun est libre de personnaliser à sa sauce.

Un debug personnalisé

Personnellement, je trouve les fonctions de debug particulièrement bien faites dans les frameworks, mais si une chose m’agace par dessus tout, c’est bien la présentation des données affichées. Afin de garder une présentation agréable, mais de toujours avoir un debug sous la main, nous avons développé une petite fonction PHP, générant votre code afin d’afficher votre debug dans un popup refermable et ré-ouvrable a souhait.

Pas besoin de vous inquiéter du Javascript ou du HTML, tout est prêt !

Libre à vous de rajouter les améliorations de script dont vous avez besoin.

Le code

function debug($item) {
	$before .= "
		<style>
			body {margin: 0; padding: 0} /* Si ce n'est pas déjà fait !! */
			#debug_lamidudev {display: none;position: fixed;width: 100%;height: 100%;background: #000;top: 0;left: 0;z-index: 999999999999;}
			#debug_lamidudev > div {position: absolute;width: 54%;height: 64%;top: 5%;left: 25%;padding: 3%;background: #ddd;background: #F45850;border-bottom: 4px solid #D84B44;border-radius: 4px;}
			#fermer {position: absolute;right: 1%;top: 1%;padding: 2px 5px;background: #D84B44;color: #fff;text-decoration: none;}
			#debug_lamidudev > div > pre {margin: 0;background: #D84B44;color: #fff;padding: 1%;border-bottom: 2px solid #984B44;border-radius: 4px;font-size: 16px;overflow-x: auto;height:98%;}
		</style>
		<script type='text/javascript'>
			function debug() {
				document.getElementById('debug_lamidudev').style.display='block';
			}
			function closeDebug() {
				document.getElementById('debug_lamidudev').style.display='none';
			}
		</script>
		<a href='#' style='background:#F45850;color:#fff;padding:5px 7px;' onclick='debug(); return false;'>Debug</a>
		<div id='debug_lamidudev'>
			<div>
				<a onclick='closeDebug(); return false;' id='fermer' href='#'>&#x274C;</a>
				<pre>";
	
	$after = "</pre>
			</div>
		</div>
	";
	
	echo $before;
		print_r($item);
	echo $after;
}

Il vous suffit maintenant de mettre ça dans un fichier debug.php par exemple et de l’inclure dans votre projet.

Il ne reste plus qu’à appeler notre fonction avec la variable que nous voulons afficher.

// Variable de test
$test = array ('a' =&gt; 'apple', 'b' =&gt; 'banana', 'c' =&gt; array ('x', 'y', 'z'));

// Appelle de la fonction
debug($test);

Et c’est tout bon ! Pas besoin de plus.

Rien de bien compliqué en soi. Un peu de Javascript pour gérer le popup du HTML et un bon vieux print_r pour afficher le contenu de notre variable.

Je le répète. L’utilisation de ce script est très standard et rien ne vous empêche de l’améliorer selon vos souhaits et vos besoins. Il y aussi beaucoup de façons différentes de générer ce genre d’outils. J’ai choisi une approche très basique, mais n’oublions pas que ce code, bien qu’utile en phase de développement, n’a pas vocation à rester sur le site en production.

Une bonne évolution de ce script serait de le passer en POO et mettre en place un système de gestion multi-variable à afficher.

Démonstration

Vu qu’une démonstration vaut mieux qu’un long discours, par ici la démo !

J’espère que ça pourra vous servir dans certain de vos projets.

Amusez-vous bien.

A bientôt les amis!

A propos de Romuald

Romuald a écrit 23 articles sur le blog.

Les amis de nos amis sont nos amis, alors partageons !

Laissez un commentaire





Si vous êtes un vrai développeur, vous devez savoir compter.
Alors on vous met au défi !
Si vous réussissez cette épreuve, nous nous ferons une joie de lire votre commentaire.