begin process at 2012 05 27 18:04:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > POO - DEBUGGER

POO - DEBUGGER


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :Debugger, Debug, Dump Niveau :Débutant Date de création :29/12/2009 Date de mise à jour :29/12/2009 15:40:27 Vu / téléchargé :3 150 / 88

Auteur : DiGhan

Ecrire un message privé
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Un debugger simple et léger.

Version 1.0.0 :
- Redirection des informations vers plusieurs sorties (écran ou fichier)
- Affichage amélioré
- Configuration de l'affichage

Source

  • <?php
  • /**
  • * Environment simulation (dev, preprod, prod)
  • */
  • require_once 'Debugger.php';
  • define('ENV', 'dev');
  • $debugger = Debugger::getInstance();
  • switch (ENV) {
  • case 'dev': $debugger->setOutputStream('screen'); break;
  • case 'preprod': $debugger->setOutputStream('file'); break;
  • case 'prod': $debugger->disable(); break;
  • }
  • $number = 1500;
  • $debugger->dump($number, 'Connections');
  • $string = 'Hi guys !';
  • $debugger->dump($string, 'Welcome message');
  • $array = array('admin' => 'allow', 'user' => 'allow', 'guest' => 'deny');
  • $debugger->dump($array);
  • $object = new stdClass();
  • $object->firstname = 'steeve';
  • $object->gender = 'male';
  • $object->address = array('postcode' => '75000', 'country' => 'france');
  • $debugger->dump($object, 'Steeve informations');
  • $isAdmin = false;
  • $debugger->dump($isAdmin);
  • $numProductsInBasket = 0;
  • $debugger->dump($numProductsInBasket, 'Products in my basket');
  • ?>
<?php

/**
 * Environment simulation (dev, preprod, prod) 
 */

require_once 'Debugger.php';

define('ENV', 'dev');

$debugger = Debugger::getInstance();

switch (ENV) {
    case 'dev': $debugger->setOutputStream('screen'); break; 
    case 'preprod': $debugger->setOutputStream('file'); break;
    case 'prod': $debugger->disable(); break;
}

$number = 1500;
$debugger->dump($number, 'Connections');

$string = 'Hi guys !';
$debugger->dump($string, 'Welcome message');

$array = array('admin' => 'allow', 'user' => 'allow', 'guest' => 'deny');
$debugger->dump($array);

$object = new stdClass();
$object->firstname = 'steeve';
$object->gender = 'male';
$object->address = array('postcode' => '75000', 'country' => 'france');
$debugger->dump($object, 'Steeve informations');

$isAdmin = false;
$debugger->dump($isAdmin);

$numProductsInBasket = 0;
$debugger->dump($numProductsInBasket, 'Products in my basket');

?>

 Conclusion

Des MAJ fréquentes sont à prévoir.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

29 décembre 2009 15:40:27 :
Clean ZIP

 Sources du même auteur

Source avec Zip Source avec une capture POO - GESTION DES COULEURS
LIB - MANIPULATION DES COULEURS (RGB-HEXA)
Source avec Zip [EXPREG] COLORATION SYNTHAXIQUE (X)HTML

 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000

 Sources en rapport avec celle ci

DUMP SQL AVEC SÉLECTION AUTOMATIQUE DES TABLES par theptitprince
Source avec Zip Source avec une capture [PHP5] IDENTIFICATION (ESPACE MEMBRE) AVEC COOKIES par PCPT
Source avec Zip [PHP5] PHP DEBUGGER ET HELPER par malalam
DUMP DÉCIMAL ET HEXADÉCIMAL D'UN FICHIER ($_FILES) par grandvizir
Source avec Zip Source avec une capture PHP_DEBUG, UNE LIBRAIRIE POUR DÉBUGGER VOTRE CODE PHP, LIENS... par COil

Commentaires et avis

Commentaire de neigedhiver le 29/12/2009 17:58:30 9/10

Salut,

C'est très sympa comme petite source, propre et plutôt bien codée pour ce que j'en ai vu, et plutôt utile.

Pour la méthode _log() tu utilises file_put_contents(). J'aime bien cette fonction aussi parce qu'elle ouvre, écrit et ferme le fichier. Son défaut dans le cas présent, c'est justement de faire tout ça. La méthode log risque d'être appelée plusieurs fois pendant l'exécution d'un script, il est donc dommage de fermer le fichier à chaque fois pour le réouvrir. Il me paraîtrait plus judicieux d'ouvrir le fichier une seule fois (lors de setOutputStream() par exemple), d'écrire à chaque fois qu'on a besoin de le faire, et de fermer le fichier à la fin (dans __destruct() par exemple).
Il faudrait alors garder une trace du pointeur du fichier dans une propriété privée. Eventuellement, le fichier peut n'être ouvert que quand on a besoin d'écrire dedans la première fois (plutôt que dans setOutputStream(), désolé, je réfléchis pendant que je tape). Mais la fermeture a bien sa place dans le destructeur : on peut imaginer vouloir logguer une information dans un fichier puis une autre à l'écran, ou dans une base de données... ce qui m'amène à penser que faire un singleton peut ne pas être le plus pertinent : pourquoi pas un multiton, par exemple ? Une instance pour chaque type de sortie, par exemple.

Je ne sais pas quelles mises à jour tu as prévues, mais hormis ce que je te propose dans les lignes ci-dessus, je suggèrerais également un log en BDD, un log dans plusieurs fichiers (en parallèle, c'est à dire sans fermer les autres quand on écrit dans un nouveau), pour permettre de journaliser différentes choses (des erreurs, des accès, etc), et enfin la possibilité de spécifier un format pour le rendu du log (un simple sprintf() permettant d'injecter les données à logguer dedans).
Bon c'est un debuggueur, pas un gestionaire d'erreurs, mais pourquoi ne pas combiner les deux ? Il pourrait alors attraper les exceptions qui ne l'ont pas été par un catch, ou intercepter les erreurs (set_error_handler()).

Commentaire de DiGhan le 02/01/2010 03:28:45

Oui, actuellement la gestion des logs se résume à sa forme la plus basique : ouverture, écriture, fermeture (une MAJ est d'ailleurs prévue pour cette partie).

Ton principe de multi-logging et de sources de données (bdd, fichier) seront intégrés dans les prochaines versions.

Concernant les MAJ il y aura une console de debug, un système de breakpoints et un benchmark.

Je tiens également à rappeler que cette source s'adresse aux débutants et/ou aux personnes n'ayant pas la possibilité d'installer des extensions comme xdebug sur leurs serveurs. Si vous avez des questions, n'hésitez surtout pas.

Merci pour tes suggestions.

Commentaire de gomoz le 04/01/2010 10:23:44

J'attends avec intérêt ces évolutions pour pouvoir juger, j'aime le projet en tous cas, c'est prometteur.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

vous voyé l'erreur??? [ par h2h ] vous voyé l'erreur?? ( erreur de type bad argument to implode()dans le debug il mécrit : debug: Select * from territoire where code_terri IN() &lt;?$c Problème de tableaux [ par zzzzzz ] Yep :)JE suis confronté a un problèmne byzare....J'ai une page complete avec une partie :echo "&lt;br&gt;id['result1']!!!!!!!!!!!!!!! : ".$id['result1 pertit problème d'insertion de dump mysql [ par luciolis ] Bonjour,je suis chez lycos webcenter et j'ai un problème d'insertion de base dans eskuel (phpmyadmin marche pas) :quand je valide l'insertion du dump problème undifined fonction pourtant définie [ par gourby ] Bonjour,j'ai un gros probl&#232;me:Fatal error: Call to undefined function: affichecaddie() in /home/arobazcr/www/2eaux-new/commande/panier.php on lin Pile LiFo et parseur XML ... [ par LocalStone ] Salut &#224; tous ... Alors voil&#224; ... Au d&#233;part c'&#233;tait juste une question, mais en fait, c'est carr&#233;ment devenu un d&#233;fi ... current($_POST) à problème.. [ par syndrael ] Bonjour j'ai le code suivant: reset($_POST); var_dump($_POST); while ($tmp = current($_POST)) { &nbsp;&nbsp; echo 'Yes'.'&lt;br&gt;'; next($_POST); } Dump MySQL sans PhpMyAdmin et performant [ par Helmut2 ] Bonjour à tous! Je suis à la recherche d'un script de dump de base de données MySQL qui soit de la trempe de l'outil d'export de PhpMyAdmin. J'ai déjà DUmp sous easy php [ par atchoumen ] Bonjour,Je fais un dump sous easy php et le fichier généré fais 0 k0 ?? alors que sur le net ca marhce sans problemele code:&lt;?echo "Votre base est Intégration objet COM dans PHP [ par a_dauguet ] Bonjour,Je me suis fait un petit objet COM en c++ que j'apelle depuis PHP.Le pb est qu'a chaque fois que j'appelle la page l'objet semble se reinstanc Contante dans les classes php définit en interne ou non [ par heliburn ] Bonjours à tous, J'ai une petite question pour les pro de la POO en php j'ai une constante define('DEBUG',true); j'aimerais savoir s'il est préféra


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,764 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales