Test de l'EDI PHPEdit

Image non disponible


précédentsommairesuivant

IV. Les extensions de PHPEdit

IV-A. La gestion de projet

IV-A-1. Présentation

Tout bon IDE sait gérer un projet complet. PHPEdit ne déroge pas à cette règle. Il le fait même très bien, puisqu'il sait définir des paramètres spécifiques à chaque solution ou projet.

Il me semble que le vocabulaire utilisé ici provient de MS Visual Studio : une solution peut contenir un ou plusieurs projets situés n'importe où dans votre système de fichiers. Un projet correspond à un répertoire de votre ordinateur.

Par défaut, l'explorateur de solutions est placé dans la marge gauche de PHPEdit.

L'explorateur de solutions
L'explorateur de solutions


Dans cette image, vous pouvez voir que j'ai configuré deux solutions ("Developpez" et "Pixiel") contenant chacune quelques projets. J'ai également un projet "tests" situé à la fois en dehors de toute solution et dans toutes les solutions : de cette manière, j'y ai toujours accès.

Je vous recommande vivement de ne pas enregistrer vos solutions et vos projets dans l'arborescence du serveur Web de votre station de développement.

Utilisez plutôt quelque chose comme suit :
  • C:\Mes Documents\Web\includes\ : Le répertoire de vos scripts à inclure ;
  • C:\Mes Documents\Web\PHPEdit\ : Le répertoire de vos solutions et projets PHPEdit ;
  • C:\Mes Documents\Web\www\ : Le répertoire accessible par HTTP.

Si vous enregistrez les fichiers de Solutions et de Projets de PHPEdit dans votre arborescence Web, vous vous retrouverez tôt ou tard avec ces mêmes fichiers sur votre serveur Web : ce n'est pas une situation dont vos clients sont supposés être témoins...

L'ajout, la modification et la suppression des solutions et des projets est trop intuitive pour nécessiter une explication. Utilisez le menu contextuel et le drag-and-drop comme vous en avez l'habitude. Prenez simplement garde à différencier l'emplacement du fichier de PHPEdit et l'emplacement de votre répertoire de scripts.

Le fichier des paramètres du projet est enregistré à un endroit
Le fichier des paramètres du projet est enregistré à un endroit.
Le répertoire du projet est ailleurs
Le répertoire du projet est ailleurs.

IV-A-2. Avis personnel

PHPEdit gère très bien les projets. Il propose une organisation similaire à celle proposée par un très grand IDE et permet de les configurer à différents niveaux, ce dont je parlerai plus en détails dans la section sur le plug-in FTP.

Comme je l'ai évoqué plus tôt, peut-être que l'interface de création de solutions et de projets pourrait gagner à être très légèrement plus explicite.

Il me semble avoir déjà évoqué le fait que PHPEdit plante de temps à autre. Lors d'un tel plantage, les nouveaux paramètres ne sont pas sauvegardés par l'IDE. Par conséquent, je vous recommande vivement de sauvegarder fréquemment les changements que vous effectuez à vos solutions et projets. C'est de toute manière une attitude que vous devriez adopter de manière générale, plantages ou non : sauvegardez fréquemment tout ce que vous faites.

Si vous rencontrez un problème de gestion du cache, utilisez la commande "refresh" dans l'explorateur de solutions.

IV-B. Les quickmarks

IV-B-1. Présentation

Les quickmarks sont des marqueurs que PHPEdit dépose dans votre code lorsque vous utilisez certaines fonctionnalités de l'IDE. Par exemple, si vous définissez plusieurs fonctions dans un script, l'IDE vous permet de naviguer rapidement de l'une à l'autre.

Je vais vous guider à travers leur utilisation. Dans un premier temps, placez-vous à la lige 10 d'un script tel que celui-ci :

 
Sélectionnez
<?php

function function_1()
{
    echo 1;
}

function function_2()
{
    echo 2;
}

?>

Dans la barre de boutons de PHPEdit, il y a une liste déroulante "Methods" : utilisez-la pour vous déplacer vers "function_1". Voici ce que vous obtenez :

Quickmark blanche

PHPEdit a déposé une quickmark (la petite flèche blanche) à l'emplacement de votre curseur avant de le dépacer dans la fonction demandée. Maintenant, appuyez sur Alt + Fin. C'est ce qui s'appelle "collect last quickmark". Si vous apprenez à l'utiliser, cela peut vous permettre de réduire considérablement le temps perdu à naviguer dans le code.

Vous pouvez bien sûr déposer volontairement une quickmark si vous le souhaitez : cela se fait au moyen de Alt + Début.

Nous allons maintenant écrire un mini wrapper pour la fonction htmlentities(), trop souvent négligée car fastidieuse à écrire. Voici notre code de départ :

 
Sélectionnez
<?php

function getHtml($string){
    return htmlentities($string, ENT_QUOTES, );
}

?>

Le premier paramètre optionnel devrait toujours être ENT_QUOTES, nous n'avons donc pas de remords à le laisser tel quel. Cependant, nous nous rendons maintenant compte que le charset peut changer et, surtout, que nous pouvons avoir besoin de cette information à plusieurs endroits. Nous allons donc avoir besoin d'une constante dans notre script.

Ainsi, déposons une quickmark avant la parenthèse fermante (Alt + Début) : PHPEdit a placé un triangle rouge à cet endroit. Déplaçons le curseur hors de la fonction et ajoutons cette ligne :

 
Sélectionnez
define('CFG_CHARSET', 'UTF-8');

Pensez à copier le nom de la constante dans le presse-papiers. Pour terminer, appuyons sur Shift + Esc : PHPEdit a ramené le curseur à l'emplacement de la quickmark et y a collé le contenu du presse papiers.

Il existe différentes quickmarks, identifiées par des couleurs distinctes :
  • Bleue : Déposée par un keyboard template
  • Blanche : Déposée par un déplacement dans le code
  • Rouge : Déposée manuellement
Les trois quickmarks
Les trois quickmarks

IV-B-2. Avis personnel

Les quickmarks sont une fonctionnalité très utile mais qui demande un investissement conséquent (pour s'y habituer). Je pense que le gain occasionné vaut les efforts fournis.

Cela dit, c'est avec les keyboard templates que les quickmarks sont les plus utiles.

IV-C. Les keyboard templates

IV-C-1. Présentation

Les gabarits de code vous permettent de saisir plus rapidement votre code non seulement en PHP mais dans tous les langages connus de PHPEdit.

Ainsi, lorsque vous écrivez "switch " (notez l'espace), PHPEdit vous créé une structure switch, utilise le contenu du presse-papiers comme condition et dépose des quickmarks aux endroits clefs de la structure. Pour couronner le tout, il surligne la condition pour que vous puissiez aisément la remplacer si le contenu du presse papiers n'est pas adéquat.

Le gabarit du mot clef 'switch'
Le gabarit du mot clef 'switch'


Bien sûr, le Code Insight permet de sélectionner un gabarit parmi les options disponibles. La liste est accessible à partir du raccourci Ctrl + J.

Choix commençant par 'c'
Choix commençant par 'c'

Pensez à modifier le gabarit du mot clef "class" car il est prévu pour une syntaxe PHP4 au lieu de PHP5.

PHPEdit vous propose des alias pour certains mots clefs. Ainsi, vous pouvez écrire "switch " ou bien "sw " afin de développer une structure switch.

Les alias du mot clef 'switch'
Les alias du mot clef 'switch'

IV-C-2. Avis personnel

L'utilisation des quickmarks est ingénieuse et, une fois l'habitude prise, vous gagnerez vraiment du temps.

N'hésitez pas à jeter un oeil aux gabarits prédéfinis, voire à les modifier selon vos habitudes : F10 / Code Tools / Keyboard Templates.

IV-D. Le débogage

IV-D-1. Lancer une session

Pour lancer une session de débogage simple, utilisez la touche F9 ou bien la flèche verte de la barre d'outils de PHPEdit.

DBG utilise l'exécutable de PHP pour exécuter votre script et vous retourner les erreurs de syntaxe à PHPEdit, qui vous permet de naviguer dans votre code de manière à les corriger.

Vous pouvez également lancer une session avec des paramètres GET à l'aide des touches Shift + F9.

Débogage simple Débogage avec paramètres

IV-D-2. Les points d'arrêt

Que serait un débogueur sans points d'arrêt ?

Un point d'arrêt est une marque que vous, développeur, posez dans votre script afin d'indiquer au débogueur qu'il doit faire une pause à cet endroit. Cela permet d'inspecter l'état des variables à cet endroit du code sans que tout le script soit exécuté et ainsi de vérifier que l'exécution suit un déroulement normal.

PHP DBG supporte cette fonctionnalité et PHPEdit est une très bonne interface. Par défaut, la touche F5 vous permet de poser ou d'enlever un point d'arrêt sur la ligne actuelle. Un point d'arrêt est marqué d'un cercle rouge dans la marge et toute la ligne de code est surlignée de cette même couleur.

Lors du lancement de la session de débogage, PHPEdit marque une pause à l'emplacement de chacun de vos points d'arrêt et vous indique dans la vue (workspace layout) "Debug" la valeur de chacune des variables du script à cet endroit précis. Vous pouvez également voir la liste des appels de fonctions (call stack), le journal de débogage (debugger log), etc.

En bref, DBG est un outil de statistiques de votre code.

IV-D-3. Le profiler

En utilisant des points d'arrêt, vous pouvez "profiler" vos scripts, c'est-à-dire savoir quelles sont les portions qui demandent le plus de temps CPU. C'est quelque chose que vous pourriez faire à l'aide des ticks dans votre code PHP mais l'IDE le fait pour vous... Cela vous évite de mélanger votre logique applicative avec la logique de test, ce qui n'est assurément pas un mal !

Lancer le profiler
Lancer le profiler lors d'une session de débogage


Le profiler permet de savoir ce qui est exécuté dans vos scripts et, surtout, combien de temps PHP est resté sur chaque ligne. Trois classements sont proposés :

Profiler par ordre alphabétique
Par ordre alphabétique (à mon sens le moins utile)
Profiler par contexte
Par contexte (par fonction/méthode)
Profiler par module
Par module (par script)

Le temps présenté par le profiler n'est évidemment pas le temps réel que votre serveur en production passera à exécuter les mêmes portions de code : trop de paramètres entrent en ligne de compte. Cependant, les proportions représentées seront très similaires. C'est là-dessus qu'il faut vous concentrer.

IV-D-4. Problèmes rencontrés

Session timeout expired

PHPEdit utilise DBG, un débogueur gratuit pour PHP. Par conséquent, il hérite de ses défauts : DBG semble malheureusement un peu chatouilleux si vous utilisez divers IDEs.

J'ai été confronté à un message d'erreur "session timeout expired" : si vous l'obtenez, vérifiez la configuration décrite plus tôt.

Si vous utilisez le débogueur pour vérifier la syntaxe de votre script, il y a une solution plus simple : le vérificateur de syntaxe (un bouton "ABC" dans l'interface de PHPEdit). Vérifiez le bas de l'IDE pour obtenir les messages d'erreur. S'il y en a, vous pouvez cliquer droit sur l'icône pour en obtenir la liste.

Erreur de syntaxe
Erreur de syntaxe

Limites du débogage avec DBG

Malheureusement (bis), DBG ne permet pas de déboguer vos scripts comme s'ils étaient exécutés sur votre serveur puisqu'il est impossible de définir des paramètres POST, SESSION ou COOKIE par exemple : seuls les paramètres GET peuvent être spécifiés. Une session de débogage ne correspond pas à une session de navigation de l'internaute mais à un seul chargement d'un script (et des scripts inclus).

Il n'est pas non plus possible de simuler une charge, par exemple lancer une session de débogage permettant de voir le comportement du script quand plusieurs centaines d'utilisateurs se connectent à la fois. Cela permettrait de voir le profil des scripts en fonction du cache opcode, ce qui n'est pas pris en compte lors de sessions individuelles de débogage.

IV-D-5. Avis personnel

Le débogage avec DBG semble n'être qu'au stade des balbutiements. Il est possible de spécifier des points d'arrêt et de faire toutes sortes de choses (notamment profiler) mais il n'est pas encore possible de tester un script en situation réelle (comme réagir à une action de l'utilisateur : $_POST, $_COOKIE et leurs congénères). Il est possible de simuler ces requêtes en tordant un peu notre logique applicative mais, dès que la variable $_SESSION s'en mêle, il est préférable d'arrêter les bricolages.

Je me répète, et PHPEdit n'est d'ailleurs pas en cause, mais le débogage au moyen de DBG a encore du chemin à faire.

IV-E. Les autres outils...

PHPEdit propose d'autres extensions, tellement que cet article deviendrait inintéressant et bien trop long à lire.

Voici celles qui n'ont pas besoin de documentation extensive :
  • Code Beautifier : Permet de refaire toute la mise en forme du code source ;
  • Commentaires : Permet de commenter une fonction en quelques clics ;
  • Générateur de documentation : Génère la documentation de votre projet à l'aide de phpDocumentor ;
  • Rapport de tâches : Génère la liste de tâches de votre projet à partir des commentaires du code source (@todo) ;
  • GExpert.org Grep : Recherche avancée (y compris à l'aide d'expressions rationnelles) dans un fichier ou un dossier ;
  • GExpert.org Code Library : Bibliothèque d'extraits de code ;
  • GExpert.org Clipboard History : Historique du presse papiers.

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2006 Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.