Comment corriger son code sans forcément appeler l’enseignant M2202

Slides:



Advertisements
Présentations similaires
TP n°1 PHP LES BASES Premier programme Affichage
Advertisements

PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Gestion de la concurrence avec Entity Framework Développement d’application avec base de données Chapitre 23 Hugo St-Louis – Automne 2015.
Le débogage Semaine 12 Version A15. Plan de leçon - Débogage  Commentaire javadoc  Définition  Fonctionnement  Point d’arrêt  Exécution  Contrôler.
Outils logiciel pour la programmation en C. 2 Automatiser la compilation : make make est un utilitaire présent dans toute les distribution de linux >
GCstar Gestionnaire de collections personnelles Christian Jodar (Tian)
1 Après 3 séances ● Utilisation du système Linux – Il faut maîtriser l'utilisation de la souris (« copy/paste » des textes donnés) – Utilisation de la.
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
1 Après 5 séances ● Utilisation du système Linux – Il faut maîtriser l'utilisation de la souris (« copy/paste » des textes donnés) – Utilisation de la.
Cours de HTML suite 3. Sommaire...  Les formulaires. Les formulaires.  Structure basique du formulaire, balise. Structure basique du formulaire, balise.
Comment utiliser le débogueur de Visual Studio /8/2015 INF145 1 Créé par Julien Galarneau Allaire, révisé par Eric Thé S.E.G.
Java et sockets TCP.
Le Langage JavaScript pour le web
Masques et opérateurs de décalage
Utilisation du logiciel EduStat©
JAVA.
Ajouter le code dans une page html
I- ANALYSE DU BESOIN / Plan
I- ANALYSE DU BESOIN / Plan
Environnement de développement des BD
Introduction au Langage Pascal
Les distributions en classes
PLAN DU MODULE (35 heures)
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
J’ai un bug, qu’est-ce que je peux faire ? Samuel Thibault 7 Mars 2017
JavaScript.
5.
Semaine #1 INF130 par Frédérick Henri.
Javadoc et débogueur Semaine 03 Version A17.
Collecte de données CAPI
Principes de programmation (suite)
11ième Classe (Mardi, 18 novembre) CSI2572
Semaine 11 Les pointeurs (suite)
Les fonctions.
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
Javadoc et débogueur Semaine 03 Version A16.
Tableaux à plusieurs dimensions en langage C
Réalisation d'agents de surveillance Zephir
Asynchronous Javascript And Xml
Cyber-Sphinx Séance 2.
Python for beginners Qu'est ce que Python
Asynchronous Javascript And Xml
5.
Cyber-Sphinx Séance 2.
CopiesEnLigne (CEL) TUTORIEL INTERACTIF
Les interfaces en PHP.
Les tableaux.
Concepts de base de la programmation
Cyber-Sphinx Séance 2.
Programmation Android Debugger ses applications
AJAX et JQuery
Cours N°10: Algorithmiques Tableaux - Matrices
Introduction aux langages formels
Exercice PHP DEUST TMIC
1 Copyright © 2004, Oracle. Tous droits réservés. Extraire des données à l'aide de l'instruction SQL SELECT.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
Les classes et les objets
Schéma de conception Factory Method Exemple
Atos, Atos et le poisson, Atos Origin et le poisson, Atos Consulting ainsi que le poisson seul sont des marques déposées d'Atos Origin SA. © 2006 Atos.
Les erreurs de mesure Projet d’Appui au renforcement des capacités
RABAH M ed Ali 2018/2019
 C’est quoi Laravel ?  Installer Laravel 5 avec Composer  Structure des Fichiers  Créer une page d’authentification  Comment faire le Routing dans.
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Lecture/Écriture de fichiers (I/O)
Collaborateurs & managers
Formation Dragon NaturallySpeaking
Python Nicolas THIBAULT
Site web, Ce qu’il faut savoir ?
Les Commandes de base Linux. 1 L’aide sur les commandes Linux ◦ help : obtenir de l’aide pour une commande interne du shell. Elle permet aussi d'afficher.
Transcription de la présentation:

Comment corriger son code sans forcément appeler l’enseignant M2202 Le débogage PHP Comment corriger son code sans forcément appeler l’enseignant M2202

Objectifs

Pour éviter les bugs Écrire un code propre ! Écrire un code aéré ! Écrire un code indenté ! Écrire un code commenté ! Écrire un code propre ! Écrire un code aéré ! Écrire un code indenté ! Écrire un code commenté !

Exemples : code aéré A éviter A faire

Exemple code indenté

Exemple: code commenté Mettre des commentaires évidents Commenter les fonctions (ce qu’elles font) Les classes et méthodes Les attributs/Variable et leur utilité Ne commentez pas inutilement (surcharge du code)

Soyez rigoureux sur les dénominations Nommage clair et précis des variables Un nom de variable doit suffire à comprendre à quoi sert la variable Soyez rigoureux sur la casse (particulièrement sous linux !) Une variable commence par une minuscule Une classe commence par une majuscule CamelCase, PSR-0, PSR-1, PSR-2, PSR-4… Certains Framework sont très rigoureux sur ce point (Symfony, CakePHP, …)

Comment débugger Afficher le contenu d’une variable Echo $toto; Permet d’identifier si elle possède bien un contenu et si ce contenu correspond à ce que vous attendez Afficher un tableau Print_r($tab) Affiche un tableau sans devoir faire un for ou un foreach NE DOIT JAMAIS ETRE UTILISE SUR UN SITE EN PRODUCTION

Comment débugger Si vous ne connaissez pas a priori le type de variable (?!) Utiliser var_dump($variable) Affiche la variable et ses valeurs, les types, … Fonctionne avec une simple variable, un tableau, un objet !

Configurer PHP pour avoir les messages d’erreur Dans le php.ini (si c’est possible) Dans le htaccess (si c’est possible) Dans le code php (en dernier recours !)

Php.ini

Quelques messages d’erreurs Parse error: parse error in xxxx.php on line y Il s'agit d'une erreur de syntaxe. Vérifiez si vous n'avez pas oublié un ; marquant la fin d'une instruction. Verifier également si il ne manque pas un $ (dollar) devant le nom d'une variable. N'hésitez pas à contrôler les lignes précédentes. L'erreur se trouve souvent juste au- dessus.

Quelques messages d’erreurs Warning: Variable $zzzz is not an array or string in xxxx.php on line y Vous tentez de manipuler une valeur numérique avec une fonction dédiée aux chaînes ou aux tableaux.

Quelques messages d’erreurs Warning: Variable $zzzz is not an array or object in xxxx.php on line y Vous tentez de manipuler une valeur numérique avec une fonction dédiée aux tableaux ou aux objets.

Quelques messages d’erreurs Warning: Cannot add header information headers already sent in xxxx.php on line y Vous avez tenté d'effectuer un Header après que l'entête HTTP ait envoyé au client. Vérifiez si une sortie (echo, print, message d'erreur, voir même du code html) ne s'exécute pas avant votre Header

Quelques messages d’erreurs Fatal error: Maximum execution time exceeded in xxxx.php on line y PHP dispose d'un mécanisme permettant de se prémunir des scripts susceptibles d'engendrer un temps d'exécution trop important pouvant saturer un serveur. Par défaut, ce temps est de 30 secondes.

Quelques messages d’erreurs Fatal Error: Call to undefined function: xxxx() in yyy.php on line z La fonction que vous appelez n'existe pas. Ce peut-être une fonction liée à une librairie externe (GD, Zlib, PDF, etc.). Dans ce cas, un simple phpinfo() vous renseignera sur les paramètres de compilation de votre version de PHP. Peut-être s'agit-il sinon d'une de vos propres fonctions. Vérifiez alors qu'elle existe (notamment si votre script y accède bien si elle se trouve dans un autre fichier). Et dans tous les cas, contrôlez de plus près le nom de la fonction appelée (orthographe, etc.). Une erreur de frappe est vite arrivée.

Quelques messages d’erreurs Fatal Error: Cannot redeclare xxxx() in yyy.php on line z Vous avez certainement déclaré plusieurs fois la même fonction. Contrôlez à nouveau l'ensemble des fonctions que vous avez créées. Et n'hésitez pas à vérifier également dans les éventuels fichiers inclus. C'est souvent dans un script secondaire que vous trouverez le doublon. Veillez aussi à ne pas utiliser le nom d'une fonction propre à PHP ou à l'une de ses librairies.

Exercices Pour les messages suivants, quel est l’erreur ?

Exemple 1

Exemple 2

Exemple 3

Exemple 4

Exemple 5 : BDD

Exemple 5 : Code provoquant l’erreur

Exemple 5 : Debuggage

Exemple 6

Les erreurs sans message Pas de message d’erreur, mais est-ce le résultat attendu ?

Les erreurs sans message Pas de message d’erreur, mais est-ce le résultat attendu ?