[METHODE] Comment on débuggue en php?

Petit nouveau ! | 1 Messages

25 mars 2007, 13:43

Bonjour,

Je suis informaticien mais je n'ai jamais fait de la programmation objet... alors je débute en php... et j'aimerais me débrouiller au maximum tout seul comme un grand... Mais le PHP, c'est assez impressionnant... alors j'ai pris un site pré fabriqué JOOMLA, j'ai pensé par expérience que c'était bien de lire d'autres codings pour apprendre. Seulement, voilà, une super arborescence, des fichiers de partout, des fonctions, des classes, et tout, et tout... Bon, j'ai bricolé, et maintenant par exemple, j'ai ce style d'erreur:

Code : Tout sélectionner

Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in i:\easyphp1-8\easyphp1-8\www\clients\includes\database.php on line 136
Et j'aimerais bien connaitre une méthode pour déboguer dans ce monde là... Comment je positionne mes traces, où s'affichent-elles? outils de pas à pas?

Vous voyez un truc, j'aimerais faire comme au boulot, merci pour vos lumières.

ViPHP
pjl
ViPHP | 2119 Messages

25 mars 2007, 22:48

Si tu veux un outil pro, prend PHPEclipse pour développer et débugger.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 mars 2007, 23:00

PHP n'étant pas un langage compilé mais exécuté, il n'y pas de système de débugage ou de pas-à-pas simple.

Il existe des tas d'IDE qui t'indiques les erreurs de syntaxe simple mais qui sont incapable de "pré-exécuter" le code, à part quelques exceptions.

Le meilleur moyen de débuger du PHP, c'est de regarder la doc de la fonction et, surtout, SURTOUT, de comprendre le message d'erreur. Il contient pratiquement tout le temps la solution au problème.

Par exemple, pour ton exemple, je sais que le 1er paramètre passé à la fonction mysql_real_escape_string est un tableau alors qu'il doit être une chaine de caractères. L'endroit où cette erreur intervient est à la ligne 136 du fichier i:\easyphp1-8\easyphp1-8\www\clients\includes\database.php.

Je profite de cette erreur pour te préciser que le PHP est un langage très faiblement typé et qu'une variable peut contenir tous les types de variables (array, int, char, string, ...)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 170 Messages

26 mars 2007, 08:59

Et si on allait à l'essentiel, on peut répondre en un seul mot.

Sa question :
"Comment on débuggue en php?"
Ma réponse :
"echo "
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 mars 2007, 09:32

Justement, quand tu t'adresses à un débutant en PHP, un seul mot, c'est souvent pas assez.

Quelque chose qui peut te paraitre simple mais demande plus d'explication à un novice, même s'il a l'habitude de développer dans d'autre langage.

Je ne suis absolument pas d'accord avec quelqu'un qui essaye de me convaincre qu'il faut être concis pour être clair.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 170 Messages

26 mars 2007, 09:44

Je ne suis absolument pas d'accord avec quelqu'un qui essaye de me convaincre qu'il faut être concis pour être clair.
Oui tu as raison de le voir sous cette forme, je ne le nies absolument pas !
Mais à l'inverse, je penses, moi, qu'être concis demandera forcément au posteur un petit effort supplémentaire dans l'obtention du réponse plus développée.
Et là, il s'implique vraiment, ce qui ne peut lui être que bénéfique.

S'il s'intéresse vraiment à son sujet, il va se manifester.
Dans le cas contraire, ma réponse restera ce qu'elle est sans que ça lui fasse plus de mal qu'avant qu'il n'arrive. :wink:
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

27 mars 2007, 12:57

Sur le site denexen.net, tu peux copier-coller tes erreurs, histoire de savoir à quoi elles correspondent.
Chaque erreur est assortie d'un ou plusieurs commentaires des personnes qui l'ont déjà eue.

Pour toi, pour débugger, pour ce projet et les futurs (temps de prise en main assez important), il y a des outils spécifiques, soit dans les EDI (Eclipse, Zend Studio, etc...), soit des outils externes (WinCacheGrind, XDebug) qui te permettent d'avoir des messages d'erreurs plus clairs.

Et si c'est juste au niveau de ton code, je te conseille :
- les var_dump(), print_r() et autres echo, à utiliser avec les constantes magiques __FILE__ et __LINE__
- la gestion d'erreur avec un set_error_handler() qui te permet de définir le comportement de ton programme lors d'une erreur. Voir la doc PHP sur la gestion des erreurs.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.